轻松上手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

复式(多类别)条形图篇(有数字标注)
https://blog.csdn.net/weixin_43682519/article/details/109444804

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值