python画图|直方图绘制教程进阶

直方图作为常见数据表达形式,使用频率较高,python也提供了灵活设置直方图形式的方法,今天和大家一起探索一下。

前序文章已经初步找到直方图绘制方法,可参考下述链接:

https://blog.csdn.net/weixin_44855046/article/details/141830709?spm=1001.2014.3001.5501

然后本次我们再加深一下,不仅要会画直方图,而且还能画好直方图,能随心所欲画直方图。

【1】官网教程

打开matplotlib主页,链接和图片如下:

https://matplotlib.org/stable/

 

图1

点开Example,就会进入看到画图最本质的几种表达形式:Lines、bars and markers

图2

直接点开左侧的Lines、bars and markers,或者点击右侧Lines、bars and markers下面的Bar color demo,就可以进入学习模式。

【2】官网教程优化

虽然Bar color demo在最初的链接里初步学习过,但学而时习之,不亦乐乎,我们再次学习。

首先把代码拷贝出来增加注释:

import matplotlib.pyplot as plt  #引入matplotlib模块
 
fig, ax = plt.subplots()  #定义一个带坐标轴的图形,用ax控制坐标轴属性

fruits = ['apple', 'blueberry', 'cherry', 'orange']   #定义字符型数组fruits
counts = [40, 100, 30, 55] #定义整形数组counts
bar_labels = ['red', 'blue', '_red', 'orange'] #定义字符型数组bar_labels
bar_colors = ['tab:red', 'tab:blue', 'tab:red', 'tab:orange'] #定义字符型数组bar_colors 

ax.bar(fruits, counts, label=bar_labels, color=bar_colors) #使用ax调用bar模块画直方图
# 直方图类别为fruits,各类别对应数据为counts,各类别的标签为bar_labels,各类别的颜色为bar_colors

ax.set_ylabel('fruit supply') #设置纵轴名称为fruit supply
ax.set_title('Fruit supply by kind and color') #设置图形名称为Fruit supply by kind and color
ax.legend(title='Fruit color') #设置图例名为Fruit color

plt.show() #输出图形

输出图片为:

图3

其实这个图形有一些看起来违背常规的地方:

【a】图例名是颜色;

【b】有两个类别,apple和cherry居然都是红色;

【c】由于a的原因,四个类别只有三个图例。

为此我们需要把部分代码拿出来解读一下:

bar_labels = ['red', 'blue', '_red', 'orange'] #定义字符型数组bar_labels
bar_colors = ['tab:red', 'tab:blue', 'tab:red', 'tab:orange'] #定义字符型数组bar_colors

ax.bar(fruits, counts, label=bar_labels, color=bar_colors) #使用ax调用bar模块画直方图
# 直方图类别为fruits,各类别对应数据为counts,各类别的标签为bar_labels,各类别的颜色为bar_colors

bar_labels在ax.bar里面被设置为图例;

在bar_labels里面同时存在‘red’和‘_red’,它们最后合并成一个‘red’在图例里输出了;

尝试将‘_red’改为‘red’,最后输出的图形里有两个red图例。

图4

原因不做深究,我们先尝试把第二个red改为green,此时的输出结果为:

图5

由图5可见,尽管label标签里面出现了green,但对应的颜色依然是红色。

追溯原因发现:bar_colors的第一和第三项都是red。尝试将第三项改为green,继续输出图形。

bar_colors = ['tab:red', 'tab:blue', 'tab:red', 'tab:orange'] #定义字符型数组bar_colors

 

图6

由图6可见颜色和标签的字面意思对上了,相当于前述的【b】和【c】被解决,接下来尝试解决【a】:把图例名改为标签名,改后如下

bar_labels = ['apple', 'blueberry', 'cherry', 'orange'] #定义字符型数组bar_labels

图7

由图7可见,图例名已经和类别名一致,至此前述【a】、【b】和【c】均被解决。

【3】总结

本文探索了画直方图时如何灵活设置图例、颜色,有助于大家优化数据表达效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值