前述学习过程中,我们已经非常熟悉,使用ax.plot和plt.plot画出来的图形都是实线图。学习可参考链接(二选一):西猫雷婶-CSDN博客https://blog.csdn.net/weixin_44855046/category_12768139.html?spm=1001.2014.3001.5482
很多时候,我们会用到直方图来表达数据特征。本次我们就一起来学习一下。
进入matplotlib官网,直接搜索bar会有以下结果:
https://matplotlib.org/stable/search.html?q=bar
图1
在这里,我们选择pyplot.bar展开学习。
点开后页面如链接和图2所示:
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.bar.html#matplotlib.pyplot.bar
图2
其中的内容对图2进行了充分解释,这里做简要说明:
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
这里所适用的假定是:直方图位于XOY直角坐标系,然后有:
x:画直方图的x轴;
height:直方图高度;
width:直方图间距;
bottom:直方图底部坐标,即底部对应y轴值;
align:直方图和坐标轴对齐元素,“center”就是指中心对齐,比如要求直方图和x=5对齐,x=5正对直方图中部;
data:可接受为字符的数据组,不用管,很少使用;
**kwargs:keyword argument,一些其他属性的补充,也不用在意。
然后我们继续下拉官网页面,进入Examples using matplotlib.pyplot.bar中的第一个实例:
图3
进入后链接和页面如下:
Bar color demo — Matplotlib 3.9.2 documentation
图4
把其中的代码复制出来:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
fruits = ['apple', 'blueberry', 'cherry', 'orange']
counts = [40, 100, 30, 55]
bar_labels = ['red', 'blue', '_red', 'orange']
bar_colors = ['tab:red', 'tab:blue', 'tab:red', 'tab:orange']
ax.bar(fruits, counts, label=bar_labels, color=bar_colors)
ax.set_ylabel('fruit supply')
ax.set_title('Fruit supply by kind and color')
ax.legend(title='Fruit color')
plt.show()
这里发现它出现的是ax.bar。这个教程甚是顽皮,在pyplot.bar页面下举例ax.bar。
好在ax.bar和pyplot.bar没有显著的区别,我对代码进行了注释:
import matplotlib.pyplot as plt #引入matplotlib函数
fig, ax = plt.subplots() #定义ax坐标轴,画一个图
fruits = ['apple', 'blueberry', 'cherry', 'orange'] #定义字符串变量
counts = [40, 100, 30, 55] #定义数组
bar_labels = ['red', 'blue', '_red', 'orange'] #定义直方图标签
bar_colors = ['tab:red', 'tab:blue', 'tab:red', 'tab:orange'] #定义直方图颜色ax.bar(fruits, counts, label=bar_labels, color=bar_colors) #ax轴上画直方图,以字符串为横坐标,以数组为纵坐标,并以不同颜色区分
ax.set_ylabel('fruit supply') #设置y坐标为fruit supply
ax.set_title('Fruit supply by kind and color') #设置图标题为Fruit supply by kind and color'
ax.legend(title='Fruit color') #设置图例名为Fruit colorplt.show() #输出图形
最后的输出图为:
图6
综上所述: 使用ax.bar和pyplot.bar均可以直接输出直方图,并支持自定义图形属性。