plt.bar链接
函数原型:
plt.bar(x, y, align="center", color='r', tick_label=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
其中:
示例代码如下:
import matplotlib.pyplot as plt
import matplotlib
import random
# 设置中文字体
matplotlib.rcParams["font.sans-serif"]=["SimHei"]
matplotlib.rcParams["axes.unicode_minus"] = False
# 构建数据
x = [i for i in range(10)]
y = [random.randint(0, 9) for j in range(10)]
# 绘制柱状图
plt.figure(figsize=(4, 4))
plt.bar(x, y, align="center", color='r', tick_label=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
plt.xlabel("x轴标签名称")
plt.ylabel("y轴标签名称")
plt.show()
显示结果如下:
如果不设置tick_label
那么x轴显示的刻度标签值将会默认使用list的长度作为刻度
堆积图顾名思义就是将若干统计图形堆叠到一起的统计图,自然是一种组合式图形。
以实际可能遇到的问题来说明,在深度学习中数据集的数量可能随着时间以及人力投入数据越来越多,以两次的数据量为背景。
只要将前文介绍的bar()
中的参数bottom设置成需要在下面的数据,具体代码示例如下:
import matplotlib.pyplot as plt
import matplotlib
import random
#设置中文字体
matplotlib.rcParams["font.sans-serif"]=["SimHei"]
matplotlib.rcParams["axes.unicode_minus"] = False
# 构建数据
x = [i for i in range(1, 6)]
y1 = [6, 10, 4, 8, 9]
y2 = [1, 3, 4, 4, 5]
tick_label = ["person", 'car', 'ball', 'dog', 'cat']
# 绘制柱状图
plt.figure(figsize=(4, 4))
plt.bar(x, y1, align="center", color='r', tick_label=tick_label)
plt.bar(x, y2, align="center", color='b', bottom=y1, tick_label=tick_label)
plt.xlabel("数据类别")
plt.ylabel("数量")
plt.show()
结果显示:
想反映训练集、测试集上不同类别数量可以使用并列柱状图。
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
# 设置中文字体
matplotlib.rcParams["font.sans-serif"]=["SimHei"]
matplotlib.rcParams["axes.unicode_minus"] = False
# 构建数据
x = np.arange(5)
y1 = [6, 10, 4, 8, 9]
y2 = [1, 3, 4, 4, 5]
bar_width = 0.35
tick_label = ["person", 'car', 'ball', 'dog', 'cat']
# 绘制柱状图
plt.figure(figsize=(4, 4))
plt.bar(x, y1, bar_width, align="center", color='r', tick_label=tick_label, label='train')
plt.bar(x+bar_width, y2, bar_width, align="center", color='b', tick_label=tick_label, label='test')
plt.xlabel("数据类别")
plt.ylabel("数量")
# 设置x轴刻度显示位置
plt.xticks(x+bar_width/2, tick_label)
plt.legend(loc='upper right')
plt.show()
显示结果如下所示:
可以用过plt.legend(loc='upper right')
设置lablel的位置,相关参数设置plt.legned参数说明
如果将柱状图的柱体由垂直方向变成水平方向,柱状图也就变成了条形图,使用barh()
source,使用条形图也可以绘制堆积以及并列图,具体参数设计可以参考上述链接。