Matplotlib 柱状图

Matplotlib 柱状图

参考:matplotlib bar

Matplotlib 是一个用于绘制高质量图形的 Python 库。在本文中,我们将详细介绍 Matplotlib 中的柱状图(bar)的用法和示例代码。

1. 绘制基本柱状图

首先,让我们看看如何绘制一个简单的柱状图。下面的示例代码演示了如何使用 Matplotlib 绘制一个简单的柱状图。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

plt.bar(x, y)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Basic Bar Chart')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们定义了 x 和 y 轴的数据,然后使用 plt.bar 函数绘制了柱状图。最终的效果是一个带有标签和标题的简单柱状图。

2. 设置柱状图颜色

你也可以通过设置 color 参数来改变柱状图的颜色。下面的示例代码演示了如何设置柱状图的颜色。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

colors = ['red', 'blue', 'green', 'purple', 'orange']

plt.bar(x, y, color=colors)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Colors')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们定义了一个颜色列表 colors,并将其作为参数传递给 plt.bar 函数,从而改变了柱状图的颜色。

3. 添加图例

如果你在同一个图中绘制了多个柱状图,你可以通过添加图例来区分它们。下面的示例代码演示了如何添加图例。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 15, 25, 30]
y2 = [15, 25, 20, 30, 35]

plt.bar(x, y1, label='First Set')
plt.bar(x, y2, label='Second Set', alpha=0.5)

plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Legend')
plt.legend()
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 plt.bar 函数绘制了两组柱状图,并通过 label 参数指定了图例的内容。最后使用 plt.legend() 函数添加了图例。

4. 堆叠柱状图

除了并排显示多组柱状图,还可以将它们堆叠在一起显示。下面的示例代码演示了如何绘制堆叠柱状图。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 15, 25, 30]
y2 = [15, 25, 20, 30, 35]

plt.bar(x, y1, label='First Set')
plt.bar(x, y2, bottom=y1, label='Second Set')

plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Stacked Bar Chart')
plt.legend()
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 bottom 参数将第二组柱状图堆叠在第一组柱状图的上方,从而创建了一个堆叠柱状图。

5. 水平柱状图

除了垂直柱状图,Matplotlib 也支持绘制水平柱状图。下面的示例代码演示了如何绘制水平柱状图。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

plt.barh(x, y, color='skyblue')
plt.xlabel('Value')
plt.ylabel('Category')
plt.title('Horizontal Bar Chart')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 plt.barh 函数绘制了一个水平柱状图,只需将数据传递给 barh 函数即可绘制水平柱状图。

6. 设置柱状图宽度

你可以通过设置 width 参数来改变柱状图的宽度。下面的示例代码演示了如何设置柱状图的宽度。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

plt.bar(x, y, width=0.6, color='salmon')
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Custom Width')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们通过设置 width 参数为 0.6 来改变了柱状图的宽度。

7. 改变柱状图透明度

你可以通过设置柱状图的透明度来调整柱状图的显示效果。下面的示例代码演示了如何改变柱状图的透明度。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

plt.bar(x, y, alpha=0.5)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Transparency')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们通过设置 alpha 参数为 0.5 来改变了柱状图的透明度。

8. 添加误差条

在柱状图中添加误差条可以展示数据的不确定性。下面的示例代码演示了如何添加误差条。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]
errors = [1, 2, 0.5, 1, 1.5]

plt.bar(x, y, yerr=errors, capsize=5)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Error Bars')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 yerr 参数添加了误差条,并设置了误差条的大小为 5。

9. 添加标签

你可以在柱状图上添加标签,展示更多信息。下面的示例代码演示了如何在柱状图上添加标签。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

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

plt.bar(x, y)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Labels')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 plt.text 函数在柱状图上方添加了数值标签,展示了每个柱状图的具体数值。

10. 水平堆叠柱状图

Matplotlib 也支持绘制水平堆叠柱状图。下面的示例代码演示了如何绘制水平堆叠柱状图。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 15, 25, 30]
y2 = [15, 25, 20, 30, 35]

plt.barh(x, y1, label='First Set')
plt.barh(x, y2, left=y1, label='Second Set')

plt.xlabel('Value')
plt.ylabel('Category')
plt.title('Horizontal Stacked Bar Chart')
plt.legend()
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 left 参数将第二组柱状图水平堆叠在第一组柱状图的左侧,从而创建了一个水平堆叠柱状图。

11. 自定义柱状图边框

你可以通过设置 edgecolor 参数来自定义柱状图的边框颜色。下面的示例代码演示了如何自定义柱状图的边框。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

plt.bar(x, y, edgecolor='black')
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Custom Edge Color')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们通过设置 edgecolor 参数为 ‘black’ 来改变了柱状图的边框颜色为黑色。

12. 添加阴影效果

你可以通过设置 shadow 参数为 True 来给柱状图添加阴影效果。下面的示例代码演示了如何在柱状图中添加阴影。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

plt.bar(x, y, color='skyblue', edgecolor='black', shadow=True)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Shadow Effect')
plt.show()

在这段代码中,我们将 shadow 参数设置为 True,为柱状图添加了阴影效果。

13. 水平柱状图带有标签

你也可以在水平柱状图上添加标签,展示更多信息。下面的示例代码演示了如何在水平柱状图上添加标签。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

for i, value in enumerate(y):
    plt.text(value, i, str(value), va='center')

plt.barh(x, y, color='salmon')
plt.xlabel('Value')
plt.ylabel('Category')
plt.title('Horizontal Bar Chart with Labels')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 plt.text 函数在水平柱状图右侧添加了数值标签,展示了每个柱状图的具体数值。

14. 添加柱状图标题

你可以通过在柱状图上方添加文本来为柱状图添加标题。下面的示例代码演示了如何添加柱状图标题。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

plt.bar(x, y)
plt.text(2.5, max(y) + 5, 'Bar Chart Title', ha='center', fontsize=12)

plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Title')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 plt.text 函数在柱状图上方添加了一个标题,将其居中显示在图形中。

15. 竖直柱状图带有数值标签

你可以通过在柱状图上添加数值标签来显示具体数值。下面的示例代码演示了如何在柱状图上添加数值标签。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

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

plt.bar(x, y)
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Value Labels')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 plt.text 函数在每个柱状图上方添加了数值标签,展示了每个柱状图的具体数值。

16. 堆叠水平柱状图带有图例

你可以在堆叠水平柱状图上添加图例,方便区分每组数据。下面的示例代码演示了如何在堆叠水平柱状图上添加图例。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 15, 25, 30]
y2 = [15, 25, 20, 30, 35]

plt.barh(x, y1, label='First Set')
plt.barh(x, y2, left=y1, label='Second Set')

plt.xlabel('Value')
plt.ylabel('Category')
plt.title('Stacked Horizontal Bar Chart with Legend')
plt.legend()
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 left 参数将第二组柱状图水平堆叠在第一组柱状图的左侧,并添加了图例以区分每组数据。

17. 自定义柱状图宽度和颜色

你可以同时设置柱状图的宽度和颜色来自定义柱状图的显示效果。下面的示例代码演示了如何自定义柱状图的宽度和颜色。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

plt.bar(x, y, width=0.5, color='teal')
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Custom Width and Color')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们通过设置 width 参数为 0.5,同时设置了柱状图的颜色为 ‘teal’,自定义了柱状图的宽度和颜色。

18. 水平堆叠柱状图带有百分比标签

在水平堆叠柱状图中添加百分比标签可以帮助理解数据的比例关系。下面的示例代码演示了如何在水平堆叠柱状图上添加百分比标签。

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D', 'E']
y1 = [10, 20, 15, 25, 30]
y2 = [15, 25, 20, 30, 35]

total = [y1_val + y2_val for y1_val, y2_val in zip(y1, y2)]

plt.barh(x, y1, label='First Set')
plt.barh(x, y2, left=y1, label='Second Set')

for i, (y1_val, y2_val) in enumerate(zip(y1, y2)):
    plt.text(y1_val/2, i, f'{y1_val/(y1_val+y2_val):.0%}')
    plt.text(y1_val + y2_val/2, i, f'{y2_val/(y1_val+y2_val):.0%}')

plt.xlabel('Value')
plt.ylabel('Category')
plt.title('Horizontal Stacked Bar Chart with Percentage Labels')
plt.legend()
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们通过计算每个柱状图的百分比并将其添加到水平堆叠柱状图中,展示了每个数据集在总和中的百分比。

19. 柱状图带有渐变颜色

你可以为柱状图设置渐变颜色,使图形更加美观和吸引人。下面的示例代码演示了如何为柱状图设置渐变颜色。

import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

x = ['A', 'B', 'C', 'D', 'E']
y = [10, 20, 15, 25, 30]

colors = [(0.2, 0.4, 0.6), (0.7, 0.9, 0.5)]  # Gradient colors
cmap = LinearSegmentedColormap.from_list("custom_cmap", colors)

plt.bar(x, y, color=cmap(range(len(x))))
plt.xlabel('Category')
plt.ylabel('Value')
plt.title('Bar Chart with Gradient Colors')
plt.show()

Output:

Matplotlib 柱状图

在这段代码中,我们使用 LinearSegmentedColormap 来定义了两种渐变颜色,并将其应用到柱状图中,为每个柱状图设置了不同的渐变颜色。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程