使用Matplotlib绘制柱状图

使用Matplotlib绘制柱状图

参考:barchart matplotlib

Matplotlib 是一个 Python 的 2D 绘图库,可以用来绘制各种图形,包括柱状图。柱状图是一种用矩形条表示数据的图表类型,通常用来比较不同类别的数据。在本文中,我们将介绍如何使用 Matplotlib 来绘制各种样式的柱状图。

1. 基本的柱状图

首先,我们来看一个简单的柱状图示例。下面是一个绘制基本柱状图的代码:

import matplotlib.pyplot as plt

# 数据
x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.bar(x, y)
plt.show()

Output:

使用Matplotlib绘制柱状图

上面的代码中,我们创建了一个包含4个类别的数据,然后使用 plt.bar() 方法绘制柱状图。运行代码后,会得到一个包含4个柱形的简单柱状图。

2. 设置柱状图颜色

我们可以通过设置 color 参数来指定柱形的颜色。下面是一个设置柱状图颜色的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.bar(x, y, color='skyblue')
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 color 参数将柱状图的颜色设置为天蓝色。你可以根据需要自行修改颜色。

3. 添加柱状图标签

我们可以通过 plt.text() 方法在柱状图上方添加数据标签。下面是一个添加柱状图标签的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.bar(x, y)

for i, v in enumerate(y):
    plt.text(i, v + 0.2, str(v), ha='center')

plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 plt.text() 方法在柱形上方添加数据标签,并设置标签位置为中部。这样可以直观地显示每个柱形的数值。

4. 绘制水平柱状图

除了垂直柱状图之外,Matplotlib 还支持绘制水平柱状图。下面是一个绘制水平柱状图的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.barh(x, y)
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 plt.barh() 方法来绘制水平柱状图。运行代码后,会得到一个水平排列的柱状图。

5. 设置柱状图宽度

我们可以通过设置 width 参数来调整柱状图的宽度。下面是一个设置柱状图宽度的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.bar(x, y, width=0.5)
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们将柱状图的宽度设置为 0.5,可以根据需要调整宽度值。

6. 绘制堆叠柱状图

Matplotlib 支持绘制堆叠柱状图来展示多组数据之间的关系。下面是一个绘制堆叠柱状图的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y1 = [3, 7, 2, 5]
y2 = [1, 4, 6, 3]

plt.bar(x, y1, label='Group 1')
plt.bar(x, y2, bottom=y1, label='Group 2')

plt.legend()
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们分别绘制了两组数据的柱状图,并使用 bottom 参数将第二组数据堆叠在第一组数据之上。通过堆叠柱状图,可以清晰地展示两组数据的对比关系。

7. 绘制并列柱状图

除了堆叠柱状图之外,我们还可以绘制并列柱状图来比较不同组数据之间的差异。下面是一个绘制并列柱状图的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y1 = [3, 7, 2, 5]
y2 = [1, 4, 6, 3]

width = 0.35
plt.bar([i - width/2 for i in range(len(x))], y1, width=width, label='Group 1')
plt.bar([i + width/2 for i in range(len(x))], y2, width=width, label='Group 2')

plt.legend()
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们通过调整每组数据的 x 坐标位置,将两组数据绘制在同一张图中,形成并列柱状图。这样可以清晰地比较两组数据之间的差异。

8. 添加图例

在绘制多组数据的柱状图时,通常要添加图例来标识不同组数据的含义。下面是一个添加图例的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y1 = [3, 7, 2, 5]
y2 = [1, 4, 6, 3]

plt.bar(x, y1, label='Group 1')
plt.bar(x, y2, bottom=y1, label='Group 2')

plt.legend()
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 plt.legend() 方法添加了图例,其中 ‘Group 1’ 和 ‘Group 2’ 分别代表两组数据的含义。通过图例,可以帮助读者理解不同组数据所代表的内容。

9. 调整坐标轴刻度

在柱状图中,我们可能需要调整坐标轴的刻度值以及显示格式。下面是一个调整坐标轴刻度的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.bar(x, y)

plt.xticks(rotation=45)  # 旋转 x 轴刻度标签
plt.yticks([0, 5, 10])   # 设置 y 轴刻度值

plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 plt.xticks()plt.yticks() 方法分别设置 x 轴和y 轴的刻度值。通过调整坐标轴的刻度,可以使柱状图更易读,更符合需求。

10. 自定义柱状图样式

Matplotlib 提供了丰富的样式选项,可以方便地自定义柱状图的外观。下面是一个自定义柱状图样式的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.bar(x, y, color='orange', edgecolor='black', linestyle='--', linewidth=2, alpha=0.7)

plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们通过设置 coloredgecolorlinestylelinewidthalpha 等参数调整了柱状图的颜色、边框颜色、线型、线宽和透明度。你可以根据需求自定义各种样式来美化柱状图。

11. 绘制带误差线的柱状图

有时候,我们需要在柱状图中显示数据的误差范围。下面是一个绘制带误差线的柱状图的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]
errors = [0.5, 1, 0.3, 0.7]

plt.bar(x, y, yerr=errors, capsize=4)

plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 yerr 参数来设置柱状图的误差范围,并通过 capsize 参数调整误差线的末端标记大小。这样可以直观地展示数据的波动范围。

12. 绘制水平带误差线的柱状图

除了垂直带误差线的柱状图之外,我们也可以绘制水平带误差线的柱状图。下面是一个绘制水平带误差线的柱状图示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]
errors = [0.5, 1, 0.3, 0.7]

plt.barh(x, y, xerr=errors, capsize=4)

plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 xerr 参数来设置水平带误差线的柱状图,并通过 capsize 参数调整误差线的末端标记大小。这样可以清晰地显示数据的波动范围。

13. 绘制堆叠带误差线的柱状图

如果需要在堆叠柱状图中显示误差范围,可以将两组数据分别绘制,并分别设置误差范围。下面是一个绘制堆叠带误差线的柱状图示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y1 = [3, 7, 2, 5]
errors1 = [0.5, 1, 0.3, 0.7]
y2 = [1, 4, 6, 3]
errors2 = [0.3, 0.6, 0.4, 0.5]

plt.bar(x, y1, yerr=errors1, label='Group 1')
plt.bar(x, y2, yerr=errors2, bottom=y1, label='Group 2')

plt.legend()
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们分别设置了两组数据的误差范围,并绘制出堆叠带误差线的柱状图。这样可以直观地展示数据的波动范围,更加准确地比较两组数据。

14. 绘制并列带误差线的柱状图

类似堆叠带误差线的柱状图,我们也可以绘制并列带误差线的柱状图。下面是一个绘制并列带误差线的柱状图示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y1 = [3, 7, 2, 5]
errors1 = [0.5, 1, 0.3, 0.7]
y2 = [1, 4, 6, 3]
errors2 = [0.3, 0.6, 0.4, 0.5]

width = 0.35
plt.bar([i - width/2 for i in range(len(x))], y1, width=width, yerr=errors1, label='Group 1')
plt.bar([i + width/2 for i in range(len(x))], y2, width=width, yerr=errors2, label='Group 2')

plt.legend()
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们分别设置了两组数据的误差范围,并绘制出并列带误差线的柱状图。通过这样的方式,可以更清晰地展示数据的波动范围,更容易进行比较。

15. 自定义柱状图标签

有时候,我们想要在柱状图中显示自定义的标签,比如百分比或小数值。下面是一个自定义柱状图标签的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.bar(x, y)

for i, v in enumerate(y):
    plt.text(i, v + 0.2, f'{v}%')

plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 plt.text() 方法在柱状图上方添加了自定义的标签,显示每个柱形的数值,并添加了百分号。通过自定义标签,可以更加直观地展示数据。

16. 设置柱状图标题

为了进一步突出柱状图的主题,我们可以添加标题来描述柱状图的内容。下面是一个设置柱状图标题的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.bar(x, y)

plt.title('Sample Bar Chart')
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 plt.title() 方法添加了柱状图的标题,可以根据需要设置不同的标题内容。通过添加标题,可以更好地帮助读者理解柱状图的意义。

17. 调整柱状图大小

有时候,我们想要调整柱状图的大小以适应不同的展示需求。下面是一个调整柱状图大小的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.figure(figsize=(8, 6))
plt.bar(x, y)

plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 plt.figure(figsize=(8, 6)) 设置了柱状图的大小为8×6,可以根据需要调整不同的宽度和高度。通过调整柱状图的大小,可以更好地展示数据并适应不同的展示需求。

18. 添加柱状图网格线

为了更好地辅助读者理解柱状图数据,我们可以添加网格线来帮助对齐柱状图中的数据点。下面是一个添加柱状图网格线的示例代码:

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
y = [3, 7, 2, 5]

plt.bar(x, y)

plt.grid(axis='y', linestyle='--', linewidth=0.5)
plt.show()

Output:

使用Matplotlib绘制柱状图

在上面的代码中,我们使用 plt.grid() 方法添加了柱状图的网格线,并通过设置 axis='y' 仅显示 y 轴方向的网格线,通过设置 linestylelinewidth 调整网格线的样式。添加网格线可以更清晰地展示数据点的位置。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程