当前位置:   article > 正文

【Python可视化系列】一文教会你绘制美观的柱状图(理论+源码)_python柱状图边框

python柱状图边框

一、前言

        前面我详细介绍了如何绘制漂亮的折线图

    【Python可视化系列】一文彻底教会你绘制美观的折线图(理论+源码)

        本篇文章将教你绘制美观的柱状图。柱状图(Bar Chart)是一种常用的统计图表,用于展示不同类别或组之间的比较。它通过使用矩形的长度来表示数据的大小或数量。

        在柱状图中,每个类别或组通常在水平轴(X轴)上被表示为独立的条形,而数据的值则在垂直轴(Y轴)上表示。条形的高度对应于数据的数值大小,从而可以直观地比较不同类别或组之间的差异。

        绘制柱状图的工具和库有很多,例如Python中的Matplotlib、Seaborn和Plotly等。这些库提供了丰富的函数和方法,使得绘制柱状图变得简单而灵活。

    持续更新可视化的一些方法,关注我,不错过!本文将详细解读绘制柱状图的要点!

plt.bar()参数详解

  1. plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
  2. x → 为一个标量序列,确定x轴刻度数目
  3. height → 确定y轴的刻度
  4. width → 单个直方图的宽度
  5. bottom → 设置y边界坐标轴起点
  6. color → 设置直方图颜色(只给出一个值表示全部使用该颜色,若赋值颜色列表则会逐一染色,若给出颜色列表数目少于直方图数目则会循环利用)
  7. 其他的一些参数:
  8. align:柱状图的中心位置,默认"center"居中,可设置为"lege"边缘;
  9. edgecolor:边框颜色;
  10. linewidth:边框宽度;
  11. tick_label:下标标签;
  12. log:柱状图y周使用科学计算方法,bool类型;
  13. orientation:柱状图是竖直还是水平,竖直:“vertical”,水平条:“horizontal”;

二、基本柱状图

  1. import matplotlib.pyplot as plt
  2. import seaborn as sns
  3. # 设置绘图风格
  4. # 法1:
  5. # sns.set(style='darkgrid', font_scale=1.2)
  6. # 法2:
  7. plt.style.use('seaborn-darkgrid')
  8. # 设置字体,中文为SimSun,英文为Times New Roman
  9. # 法1:
  10. plt.rcParams['font.family'] = 'Times New Roman, SimSun'
  11. # 法2:
  12. # font1 = {'family': 'Times New Roman, SimSun'}
  13. # plt.rc('font', **font1)
  14. # 法3:
  15. # config = {
  16. # "font.family": 'Times New Roman, SimSun', # 衬线字体
  17. # "font.size": 12, # 相当于小四大小
  18. # "mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大
  19. # 'axes.unicode_minus': False # 处理负号,即-号
  20. # }
  21. # plt.rcParams.update(config)
  22. # 数据
  23. x = ['A', 'B', 'C', 'D']
  24. y = [10, 20, 15, 25]
  25. # 绘制柱状图
  26. plt.bar(x, y)
  27. # 添加标题和标签
  28. plt.title('柱状图示例',fontsize=16)
  29. plt.xlabel('类别',fontsize=16)
  30. plt.ylabel('数值',fontsize=16)
  31. # 显示图形
  32. plt.show()

效果如下:

图片

三、同一个x轴位置绘制多个柱状图

  1. from matplotlib import pyplot as plt
  2. import numpy as np
  3. # 参数设置
  4. plt.style.use('seaborn-darkgrid')
  5. plt.rcParams['font.family'] = 'Times New Roman, SimSun'
  6. # 数据
  7. classes = ['一班', '二班', '三班', '四班', '五班']
  8. language = [87, 85, 89, 81, 78]
  9. math = [85, 98, 84, 79, 82]
  10. english = [83, 85, 82, 87, 78]
  11. # 将横坐标班级先替换为数值
  12. x = np.arange(len(classes))
  13. width = 0.2
  14. language_x = x
  15. math_x = x + width
  16. english_x = x + 2 * width
  17. # 绘图
  18. plt.bar(language_x, language, width=width, color='gold', label='语文')
  19. plt.bar(math_x,math,width=width,color="silver",label="数学")
  20. plt.bar(english_x,english,width=width, color="saddlebrown",label="英语")
  21. #将横坐标数值转换为班级
  22. plt.xticks(x + width, labels=classes)
  23. #显示柱状图的高度文本
  24. for i in range(len(classes)):
  25. plt.text(language_x[i],language[i], language[i],va="bottom",ha="center",fontsize=8)
  26. plt.text(math_x[i],math[i], math[i],va="bottom",ha="center",fontsize=8)
  27. plt.text(english_x[i],english[i], english[i],va="bottom",ha="center",fontsize=8)
  28. #显示图例
  29. plt.legend(loc="upper right")
  30. plt.show()

同一个x轴绘制多个柱状图重点在于需要设置x这个参数,即确定好x轴刻度的位置,效果如下:

四、叠堆柱状图

  1. from matplotlib import pyplot as plt
  2. import numpy as np
  3. # 参数设置
  4. plt.style.use('seaborn-darkgrid')
  5. plt.rcParams['font.family'] = 'Times New Roman, SimSun'
  6. # 数据
  7. classes = ['一班', '二班', '三班', '四班', '五班']
  8. language = np.array([87, 85, 89, 81, 78])
  9. math = np.array([85, 98, 84, 79, 82])
  10. english = np.array([83, 85, 82, 87, 78])
  11. width = 0.3
  12. #绘图
  13. plt.bar(classes, language, color='gold', label='语文',bottom=math + english,width=width)
  14. plt.bar(classes, math, color='silver', label='数学', bottom=english,width=width)
  15. plt.bar(classes, english, color='#A0522D', label='英语',width=width)
  16. #设置y轴标签,图例和文本值
  17. plt.ylabel('平均分')
  18. plt.legend(loc='upper right')
  19. for i in range(len(classes)):
  20. max_y = english[i]+math[i]+language[i]
  21. plt.text(classes[i], max_y, max_y, va="bottom", ha="center")
  22. plt.show()

堆叠柱状图重点在于设置bottom这个参数,效果如下:

好了,本篇内容就到这里,需要源码的小伙伴可以关注我

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/513312?site
推荐阅读
相关标签
  

闽ICP备14008679号