轻松上手Matplotlib__单式(单类别)条形图篇(详细讲解横轴、竖轴数字标注)
Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。
条形图:排列在工作表的列或行中的数据可以绘制到条形图中。
特点:绘制连离散的数据,能够一眼可看出各个数据的大小,比较数据之间的差别。(统计)
首先,我们分析下绘制柱状图代码:(基于Jupyter Notebook运行,Pycharm也可)
from matplotlib import pyplot as plt
#####解决中文问题
plt.rcParams['font.sans-serif']=['SimHei']
#数据
a=["战狼2","速度与激情8","加勒比海盗","变形金刚5:最后的骑士","摔跤吧!爸爸","咒术回战","斗破苍穹"]
b=[50,32.1,44,55.3,66,21.3,55.2,]
#设置图片大小和分辨率,其中figure单位为英寸,dpi为分辨率
plt.figure(figsize=(20,8),dpi=80)
x=plt.bar(range(len(a)),b,width=0.3,label="10月电影播放量",color="orange")
#设置X轴的刻度和字符串,步长为1
plt.xticks(range(len(a)),a)
plt.xlabel("电影名字") #X轴标签
plt.ylabel("票房 单位:亿元") #Y轴标签
plt.title("科技中心电影院") #图片标题
#用于设置数字标注
for i in x :
height=i.get_height()
plt.text(i.get_x()+i.get_width()/2,height,str(height),fontsize=15,va="bottom",ha="center")
plt.legend() #添加图例
plt.show() #展示
图片效果:
plt.plot()是用来画折线图的,plt.scatter()是用来画散点图的,plt.bar()是用来画条形图的,这是三者最大区别。
其中:
1、plt.xticks(ticks , [labels] , kwargs)(Y轴也有该函数,把x改成y即可)
参数说明:
ticks:用于设置X轴刻度间隔;
[labels] :其实是用于设置每个间隔的显示标签:例如上图的X轴的11点0分;
**kwargs:用于设置标签字体的倾斜度和颜色等外观属性,例如加rotation=60,字体旋转60°。
2、添加图例位置plt.legend()要与plt.bar()里面加上标签一起使用才有效。
3、让我们来看看如何设置数字标注:
核心代码块(两句话就搞定):
#用于设置数字标注
for i in x :
height=i.get_height()
plt.text(i.get_x()+i.get_width()/2,height,str(height),fontsize=15,va="bottom",ha="center")
但光知道代码没用,首先我们来分析下plt.text():
plt.text(x, y, string, **kwargs)
#这个是我使用的,可以对比上下两函数参数位置:
plt.text(i.get_x()+i.get_width()/2,height,str(height),fontsize=15,va="bottom",ha="center")
常用参数说明(还有很多参数):
到这里是不是还有点绕,换句话说就是:
plt.text(x的位置,y的位置,数字(其它)标注,字体大小,水平位置,垂直位置)
对于,为什么用到For循环,是为了获取每一条图形的高度(即y值)和x的值,才方便把标注标到合适位置。
这里我输出了各个值,方便你理解:
有看见红框一小竖线吗,那个才是i.get_x()+i.get_width()/2的值。
到此,我们大概讲完竖着的,我们来看看平行的,先看看图吧:
这个又怎么实现呢?
来,别怕,上代码:
from matplotlib import pyplot as plt
#####解决中文问题
plt.rcParams['font.sans-serif']=['SimHei']
a=["战狼2","速度与激情8","加勒比海盗","变形金刚5:最后的骑士","摔跤吧!爸爸","咒术回战","斗破苍穹"]
b=[50,32.1,44,55.3,66,21.3,55.2,]
plt.figure(figsize=(20,8),dpi=80)
#x=plt.bar(range(len(a)),b,width=0.3,label="10月电影播放量",color="orange")
x=plt.barh(range(len(a)),b,height=0.3,label="10月电影播放量",color="orange")
plt.yticks(range(len(a)),a)
plt.ylabel("电影名字")
plt.xlabel("票房 单位:亿元")
plt.title("科技中心电影院")
for i in x :
height_x=i.get_width()
plt.text(height_x,i.get_y()+i.get_height()/2,str(height),fontsize=15,va="center",ha="left")
plt.legend()
plt.show()
认真看,你会发现,其实也没变什么,就是把plt.bar()变成plt.barh()。
注释的就是原本的,是不是没怎么变。就是把width变为height。
对了,数字标注,我们也只需稍微改动下就可:
怎么理解呢?变换了之后,x轴就是原来的height的高度(原y值),y轴就是原来x的值,其实这里还是会有点绕,还是需要细细思考。自己草稿画画图能更好理解,给你一个思考空间。
如果代码看不懂,请结合效果图,或者自己跑跑程序改改,看看图片变化,理解起来事半功倍。
折线图篇: https://blog.csdn.net/weixin_43682519/article/details/109386158
散点图篇:
链接: https://blog.csdn.net/weixin_43682519/article/details/109387622
.
上一篇: Oracle数据库开发必备利器之SQL基础——用户与表空间
下一篇: WPF 窗口学习