python如何绘制柱状图
1、插件安装安装两种插件pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlibpip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy2、普通柱状图柱状图绘制步骤导入matplotlib.pyplot模块准备数据,可以使用numpy/pandas整理数据调
·
1、插件安装
安装两种插件
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
2、普通柱状图
柱状图绘制步骤
- 导入
matplotlib.pyplot
模块 - 准备数据,可以使用
numpy/pandas
整理数据 - 调用
pyplot.bar()
绘制柱状图
上代码
import numpy as np
import matplotlib.pyplot as plt
import random
# 准备数据
x_data = [f"20{i}年" for i in range(16, 21)]
y_data = [random.randint(100, 300) for i in range(6)]
# 正确显示中文和负号
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 画图,plt.bar()可以画柱状图
for i in range(len(x_data)):
plt.bar(x_data[i], y_data[i])
# 设置图片名称
plt.title("销量分析")
# 设置x轴标签名
plt.xlabel("年份")
# 设置y轴标签名
plt.ylabel("销量")
# 显示
plt.show()
效果图
函数解析
plt.bar()
用于画柱状图,还可以使用plt.plot()
绘制折线图plt.xlabel()
plt.ylabel()
用于标注x轴、y轴plt.title()
用于给图片添加标题plt.legend()
用于给柱状图添加图例(注释)plt.show()
用于最终展示图片
3、并列柱状图
上代码
import matplotlib.pyplot as plt
import numpy as np
size = 5
# 返回size个0-1的随机数
a = np.random.random(size)
b = np.random.random(size)
c = np.random.random(size)
# x轴坐标, size=5, 返回[0, 1, 2, 3, 4]
x = np.arange(size)
# 有a/b/c三种类型的数据,n设置为3
total_width, n = 0.8, 3
# 每种类型的柱状图宽度
width = total_width / n
# 重新设置x轴的坐标
x = x - (total_width - width) / 2
print(x)
# 画柱状图
plt.bar(x, a, width=width, label="a")
plt.bar(x + width, b, width=width, label="b")
plt.bar(x + 2*width, c, width=width, label="c")
# 显示图例
plt.legend()
# 显示柱状图
plt.show()
效果图
扩展功能
- 功能1:使用
plt.xticks()
代码可以把0, 1, ...
替换成第1组, 第2组...
- 功能2:显示具体的数字在柱状图中,可以在plt.legend()前添加
plt.text()
代码
代码如下:
# 功能1
x_labels = ["第1组", "第2组", "第3组", "第4组", "第5组"]
# 用第1组...替换横坐标x的值
plt.xticks(x, x_labels)
# 功能2
for i, j in zip(x, a):
plt.text(i, j + 0.01, "%.2f" % j, ha="center", va="bottom", fontsize=7)
for i, j in zip(x + width, b):
plt.text(i, j + 0.01, "%.2f" % j, ha="center", va="bottom", fontsize=7)
for i, j in zip(x + 2 * width, c):
plt.text(i, j + 0.01, "%.2f" % j, ha="center", va="bottom", fontsize=7)
效果图:
函数解析
plt.xticks(ticks=None, labels=None)
ticks表示将要标注的标签的坐标轴位置,labels表示要替换成的标签名称plt.text(x, y, s, fontdict=None, **kwargs)
x, y表示坐标位置,s表示要写入的字符串
扩展功能:保存文件
直接上代码
plt.savefig(fname="./test.png", dpi=100)
函数解析
plt.savefig()
用于保存图片fname
保存的图片文件的名称dpi
保存图片的分辨率- 注意:该方法不能在plt.show()后面,否则保存为空图片
参考文章:
https://www.jb51.net/article/230809.htm#_label3
https://blog.csdn.net/qq_39691492/article/details/119422424
更多推荐
已为社区贡献4条内容
所有评论(0)