matplotlib可视化——柱状图

2.1 绘制柱状图

plt.bar链接

函数原型:

plt.bar(x, y, align="center", color='r', tick_label=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

其中:

  1. x:柱状图中的主体标签值。
  2. y:柱状图中柱体的高度
  3. align:柱体的对齐方式
  4. color:颜色
  5. tick_label:刻度标签值
  6. alpha:柱体的透明度

示例代码如下:

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()

显示结果如下:

avatar

如果不设置tick_label那么x轴显示的刻度标签值将会默认使用list的长度作为刻度

avatar

2.1.1 柱状堆积图

堆积图顾名思义就是将若干统计图形堆叠到一起的统计图,自然是一种组合式图形。
以实际可能遇到的问题来说明,在深度学习中数据集的数量可能随着时间以及人力投入数据越来越多,以两次的数据量为背景。

只要将前文介绍的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()

结果显示:

avatar

2.1.2 多数据并列柱状图

想反映训练集、测试集上不同类别数量可以使用并列柱状图。

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()

显示结果如下所示:

avatat
可以用过plt.legend(loc='upper right')设置lablel的位置,相关参数设置plt.legned参数说明

2.2 条形图

如果将柱状图的柱体由垂直方向变成水平方向,柱状图也就变成了条形图,使用barh()source,使用条形图也可以绘制堆积以及并列图,具体参数设计可以参考上述链接。

你可能感兴趣的:(python,数据可视化)