练习用python代码画条形图

 转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


工作中会遇到很多需要统计数据,画图分析的场景。之前使用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筛选自己想要的数据做饼图_python筛选绘画-优快云博客

欢迎关注SRE成长记一起探讨学习!↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值