转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。
工作中会遇到很多需要统计数据,画图分析的场景。之前使用Python画过饼图,但是使用场景有限,如果要用到条形图,怎么画呢?
准备工作
1. 创建测试数据
创建原始测试数据文件《SRE成长记四川特产销售额统计表.xlsx》,表格内容如下:
2. 库安装
在Python中安装pandas和matplotlib两个库。
绘图实验
1. 绘制纵向条形图
代码和注释:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time : 2024/12/29 13:03
# File : tiaoxingtu.py
# Author : SRE成长记
# Software: PyCharm
# ------------------------------
import pandas as pd
import matplotlib.pyplot as plt
# 解决显示中文问题:
plt.rcParams['font.sans-serif'] = ['STkaiti'] #指定默认字体
plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号“-”,显示为方块的问题
# 读取数据
data = pd.DataFrame(pd.read_excel("SRE成长记四川特产销售额统计表.xlsx","2023"))
# print(data)
# 画条形图
product=['腊肉香肠类','蜂蜜','红薯淀粉','蛋类']
data=[int(data["腊肉香肠类"]),int(data["蜂蜜"]),int(data["红薯淀粉"]),int(data["蛋类"])]
print(data)
colors = ['#0780cf','#765005','#fa6d1d','#0e2c82'] #从左往右,依次定义每一根柱子的颜色,不定义就默认都是蓝色
p1=plt.bar(product,data,width=0.5,color=colors) #width:定义条形图的条状宽度;color:如果把color=color换成color="rgby",虽然也能成功定义颜色,但执行时会有异常提示
plt.bar_label(p1,labels=None,label_type='edge') # 显示数据标签,并且数据展示在每一条数据条的顶部,即图中的8632、10365等4个数字
plt.text(2,8000,"制图:SRE成长记") #在某个指定的坐标位置加上文字说明,第一个数字代表横轴,第二个数字代表数轴,数字的大小根据本图中的值调整
plt.title("2023年四川特产销售图")
plt.savefig("2023年四川特产销售图-条形图.png",dpi=200) #dpi=200:指定分辨率。bbox_inches: 只有图形给定部分会被保存。设置为“tight”用以恰当的匹配所保存的图形。
plt.show()
运行代码得到图片如下:
同样,因设置了plt.savefig()的关系,在当前目录同样会生成图片文件:
2. 绘制横向条形图
绘制横向条形图和默认的纵向条形图区别在于要指定X轴和X轴,主要区别在这三行代码:
p1=plt.barh(product,data,height=0.5,color=colors) #height:定义条形图的条状高度;color:如果把color=color换成color="rgby",虽然也能成功定义颜色,但执行时会有异常提示
plt.yticks(product) #指定Y轴
plt.xlim(0,15000) #指定x轴
绘制横向条形图完整代码和注释:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time : 2024/12/29 13:03
# File : tiaoxingtu.py
# Author : SRE成长记
# Software: PyCharm
# ------------------------------
import pandas as pd
import matplotlib.pyplot as plt
# 解决显示中文问题:
plt.rcParams['font.sans-serif'] = ['STkaiti'] #指定默认字体
plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号“-”,显示为方块的问题
# 读取数据
data = pd.DataFrame(pd.read_excel("SRE成长记四川特产销售额统计表.xlsx","2023"))
# print(data)
# # 画条形图
product=['腊肉香肠类','蜂蜜','红薯淀粉','蛋类']
data=[int(data["腊肉香肠类"]),int(data["蜂蜜"]),int(data["红薯淀粉"]),int(data["蛋类"])]
print(data)
colors = ['#0780cf','#765005','#fa6d1d','#0e2c82'] #从左往右,依次定义每一根柱子的颜色,不定义就默认都是蓝色
# p1=plt.bar(product,data,height=0.1,color=colors) #width:定义条形图的条状宽度;color:如果把color=color换成color="rgby",虽然也能成功定义颜色,但执行时会有异常提示
### 与绘制纵向条形图的区别开始......
p1=plt.barh(product,data,height=0.5,color=colors) #height:定义条形图的条状高度;color:如果把color=color换成color="rgby",虽然也能成功定义颜色,但执行时会有异常提示
plt.yticks(product) #指定Y轴
plt.xlim(0,15000) #指定x轴
### 与绘制纵向条形图的结束......
plt.bar_label(p1,labels=None,label_type='edge') # 显示数据标签,并且数据展示在每一条数据条的顶部,即图中的8632、10365等4个数字
plt.text(2,8000,"制图:SRE成长记") #在某个指定的坐标位置加上文字说明,第一个数字代表横轴,第二个数字代表数轴,数字的大小根据本图中的值调整
plt.title("2023年四川特产销售图")
plt.savefig("2023年四川特产销售图-条形图.png",dpi=200) #dpi=200:指定分辨率。bbox_inches: 只有图形给定部分会被保存。设置为“tight”用以恰当的匹配所保存的图形。
plt.show()
执行代码得到图如下:
这就是使用python绘制的两个简单的条形图啦。
相关文章:
使用python画饼图-进阶版_python饼图代码-优快云博客
【python画图进阶+】python筛选自己想要的数据做饼图_python筛选绘画-优快云博客