1、插件安裝
安裝兩種插件
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
2、普通柱狀圖
柱狀圖繪制步驟
- 導(dǎo)入
matplotlib.pyplot
模塊 - 準備數(shù)據(jù),可以使用
numpy/pandas
整理數(shù)據(jù) - 調(diào)用
pyplot.bar()
繪制柱狀圖
上代碼
import numpy as np
import matplotlib.pyplot as plt
import random
# 準備數(shù)據(jù)
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])
# 設(shè)置圖片名稱
plt.title("銷量分析")
# 設(shè)置x軸標簽名
plt.xlabel("年份")
# 設(shè)置y軸標簽名
plt.ylabel("銷量")
# 顯示
plt.show()
效果圖
函數(shù)解析
-
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的隨機數(shù)
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三種類型的數(shù)據(jù),n設(shè)置為3
total_width, n = 0.8, 3
# 每種類型的柱狀圖寬度
width = total_width / n
# 重新設(shè)置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:顯示具體的數(shù)字在柱狀圖中,可以在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)
效果圖:
函數(shù)解析
-
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)
函數(shù)解析文章來源:http://www.zghlxwxcb.cn/news/detail-502611.html
-
plt.savefig()
用于保存圖片-
fname
保存的圖片文件的名稱 -
dpi
保存圖片的分辨率 - 注意:該方法不能在plt.show()后面,否則保存為空圖片
-
參考文章:
https://www.jb51.net/article/230809.htm#_label3
https://blog.csdn.net/qq_39691492/article/details/119422424文章來源地址http://www.zghlxwxcb.cn/news/detail-502611.html
到了這里,關(guān)于python如何繪制柱狀圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!