利用matplotlib绘制柱状图
柱状图是一种用矩形柱来表示数据分类的图表,柱状图可以垂直绘制,也可以水平绘制,它的高度与其所表示的数值成正比关系。柱状图显示了不同类别之间的比较关系,图表的水平轴 X 指定被比较的类别,垂直轴 Y 则表示具体的类别值。
绘制柱状图的命令为:
bar()
1.简单柱状图绘制
下面从建造一个简单的柱状图开始,代码如下
import matplotlib.pyplot as pltdata = [5, 20, 15, 25, 10]plt.bar(range(len(data)), data)plt.show() # 显示图形
2.修改x轴的标签
假设数据为选课的学生人数,那么横轴就是每个科目(subject),我们可以通过如下方式修改x轴的标签(数学(math),语文(language),英语(english),体育(sport),政治(politics))。
import matplotlib.pyplot as pltdata = [5, 10, 20, 15, 25]subject = ['math', 'language', 'english', 'sports', 'politics']plt.bar(subject, data)plt.show()
也可以通过xticks函数修改,参考下方绘制并列柱状图例子。
3.设置柱体颜色
(1)一次性改变一个颜色
通过 facecolor(fc) 参数可以设置柱体颜色,比如将柱体设置成红色:
import matplotlib.pyplot as pltdata = [5, 10, 20, 15, 25]subject = ['math', 'language', 'english', 'sports', 'politics']plt.bar(subject, data, fc='r') plt.show()
(2)一次性改变多个颜色
也可以通过 color 参数一次性设置多个颜色
import matplotlib.pyplot as pltdata = [5, 10, 20, 15, 25]subject = ['math', 'language', 'english', 'sports', 'politics']plt.bar(subject, data, color=['r', 'b', 'y']) # 目前pyhton3.9版本不支持写成{color=’rby‘}plt.show()
4.柱状图的美化
(1)柱状图内部填充
hatch='' 可设置填充图案,如/,-,+,o,O,.等
import matplotlib.pyplot as pltdata = [5, 10, 20, 15, 25]subject = ['math', 'language', 'english', 'sports', 'politics']plt.bar(subject, data, color=['r', 'b', 'y'], hatch='/') plt.show()
(2)添加柱状图的边框
相关的关键字参数为:edgecolor (ec),linestyle ( ls),linewidth (lw)
import matplotlib.pyplot as pltdata = [5, 10, 20, 15, 25]subject = ['math', 'language', 'english', 'sports', 'politics']plt.bar(subject, data, color=['r', 'b', 'y'], hatch='/', ec='g', ls='-', lw=5)plt.show()
ec参数选择边框颜色,ls参数选择边框样式,lw参数调整边框宽度。
5.绘制并列柱状图
主要需要控制好每个柱之间的距离,比如:
import numpy as npimport matplotlib.pyplot as plt # 导入所需库# 导入数据x = np.arange(5)x1 = [59, 82, 75, 65, 72]x2 = [68, 82, 77, 89, 61]x3 = [90, 71, 86, 53, 62] # 设置所需参数total_width, n = 0.8, 3 # (柱状图的默认宽度值为 0.8)width = total_width / nx = x - (total_width - width) / 2 # 现在的x是每个并列柱的第一柱的中心横坐标# 绘制图plt.bar(x, x1, width=width, label='language', fc='b')plt.bar(x + width, x2, width=width, label='math', fc='r')plt.bar(x + 2 * width, x3, width=width, label='english', fc='y')plt.xticks(np.arange(5), ['tom', 'jack', 'bob', 'jone', 'lucy']) # 将横坐标修改为学生姓名plt.legend() # 添加图例plt.show()
也可以通过
plt.ylabel('') # 添加y轴标签
plt.title('') # 添加图
进而完善图形,这里就不进行演示了
6.绘制堆叠柱状图
可以通过 bottom 参数绘制堆叠柱状图。
import numpy as npimport matplotlib.pyplot as pltx = np.arange(3)x1 = np.random.random(3)x2 = np.random.random(3)# 中文乱码处理plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']# 坐标轴负号处理plt.rcParams['axes.unicode_minus'] = Falseplt.bar(x, x1, label='语文')plt.bar(x, x2, bottom=x1, label='数学')plt.legend()plt.show()
7.绘制条形图
barh方法绘制条形图,其剩余画图方法与柱状图类似
import matplotlib.pyplot as pltdata = [36, 27, 15, 29, 10]plt.barh(range(len(data)), data)plt.show()
来源地址:https://blog.csdn.net/weixin_65350557/article/details/128678855