基于Matplotlib绘制柱状图

基于Matplotlib绘制柱状图

参考:Matplotlib Bar Plot

Matplotlib是Python中一个非常流行的绘图库,可以用来创建各种类型的图形,包括柱状图。柱状图是用来显示不同类别数据之间的比较或变化的一种有效方式。在本文中,我们将介绍如何使用Matplotlib来绘制各种不同类型的柱状图。

基本柱状图

首先,让我们来看一个最基本的柱状图例子。在这个例子中,我们将使用Matplotlib来绘制一个简单的柱状图,显示不同类别的数值。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]

# 绘制柱状图
plt.bar(categories, values)

# 添加标题和标签
plt.title('Basic Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个简单的柱状图,显示了不同类别的数值。

堆叠柱状图

接下来,让我们来看一个堆叠柱状图的例子。堆叠柱状图可以显示不同类别中的子类别的分布情况。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 20, 25, 30]

# 绘制堆叠柱状图
plt.bar(categories, values1, label='Group 1')
plt.bar(categories, values2, bottom=values1, label='Group 2')

# 添加标题和标签
plt.title('Stacked Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 添加图例
plt.legend()

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个堆叠柱状图,显示了不同类别中两组数值的分布情况。

并列柱状图

另一种常见的柱状图类型是并列柱状图,用于比较同一类别中不同组的数值。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 20, 25, 30]

# 设置柱宽
bar_width = 0.35

# 绘制并列柱状图
plt.bar(categories, values1, width=bar_width, label='Group 1')
plt.bar([val+bar_width for val in range(len(categories))], values2, width=bar_width, label='Group 2')

# 添加标题和标签
plt.title('Grouped Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 添加图例
plt.legend()

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个并列柱状图,显示了同一类别中两组数值的比较。

横向柱状图

除了纵向柱状图之外,Matplotlib还支持绘制横向柱状图。横向柱状图在某些情况下可以更好地显示数据。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]

# 绘制横向柱状图
plt.barh(categories, values)

# 添加标题和标签
plt.title('Horizontal Bar Plot')
plt.xlabel('Values')
plt.ylabel('Categories')

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个横向柱状图,显示了不同类别的数值。

带误差线的柱状图

有时候,我们需要在柱状图中显示数据的误差范围,这时候就可以使用带误差线的柱状图。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]
errors = [2, 3, 1, 2]

# 绘制带误差线的柱状图
plt.bar(categories, values, yerr=errors, capsize=5)

# 添加标题和标签
plt.title('Bar Plot with Error Bars')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个带误差线的柱状图,显示了不同类别的数值和其误差范围。

群组柱状图

群组柱状图可以用来同时比较多组数据之间的差异。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 25, 20, 30]
values3 = [25, 30, 35, 40]

# 设置柱宽
bar_width = 0.2

# 绘制群组柱状图
plt.bar([val-bar_width for val in range(len(categories))], values1, width=bar_width, label='Group 1')
plt.bar(range(len(categories)), values2, width=bar_width, label='Group 2')
plt.bar([val+bar_width for val in range(len(categories))], values3, width=bar_width, label='Group 3')

# 添加标题和标签
plt.title('Grouped Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 添加图例
plt.legend()

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个群组柱状图,显示了不同组数据之间的比较。

柱状图颜色和样式

在Matplotlib中,我们可以自定义柱状图的颜色和样式,以增强可视效果。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]

# 自定义颜色和样式
colors = ['skyblue', 'salmon', 'lightgreen', 'orchid']
patterns = ['/','//','-', '+']

# 绘制柱状图
plt.bar(categories, values, color=colors, hatch=patterns)

# 添加标题和标签
plt.title('Colored and Patterned Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个自定义颜色和样式的柱状图。

竖向柱状图堆叠区域图

在Matplotlib中,我们还可以使用堆叠区域图来呈现柱状图。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 20, 25, 30]

# 绘制竖向柱状图堆叠区域图
plt.bar(categories, values1, label='Group 1', color='skyblue')
plt.bar(categories, values2, bottom=values1, label='Group 2', color='salmon')

# 添加标题和标签
plt.title('Stacked Area Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 添加图例
plt.legend()

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个堆叠区域图,显示了竖向柱状图的堆叠效果。

水平柱状图堆叠区域图

除了竖向柱状图堆叠区域图,我们还可以使用水平柱状图堆叠区域图来展示数据。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 20, 25, 30]

# 绘制水平柱状图堆叠区域图
plt.barh(categories, values1, label='Group 1', color='skyblue')
plt.barh(categories, values2, left=values1, label='Group 2', color='salmon')

# 添加标题和标签
plt.title('Horizontal Stacked Area Bar Plot')
plt.xlabel('Values')
plt.ylabel('Categories')

# 添加图例
plt.legend()

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个水平柱状图堆叠区域图,展示了水平柱状图的堆叠效果。

带标记的柱状图

有时候,我们需要在柱状图中显示具体的数值,这时候可以在柱状图上添加标记。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]

# 绘制柱状图
bars = plt.bar(categories, values)

# 添加标记
for bar in bars:
    plt.text(bar.get_x() + bar.get_width()/2, bar.get_height(), str(bar.get_height()), 
             ha='center', va='bottom')

# 添加标题和标签
plt.title('Bar Plot with Labels')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个带有数值标记的柱状图。

线框柱状图

线框柱状图可以用于强调数据之间的差异,使柱子看起来更加立体。

import numpy as np
import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]

# 设置柱宽
bar_width = 0.4

# 绘制线框柱状图
plt.bar(categories, values, width=bar_width, edgecolor='black')
plt.bar(categories, np.add(values, 5), width=bar_width, edgecolor='black', color='none', linestyle='dashed')

# 添加标题和标签
plt.title('Bar Plot with Wireframe')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个线框柱状图,使柱子看起来更加立体。

不同柱子不同颜色

有时候,我们希望在柱状图中每根柱子都有不同的颜色,以便更好地区分不同类别。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]

# 不同柱子不同颜色
colors = ['skyblue', 'salmon', 'lightgreen', 'orchid']

# 绘制柱状图
plt.bar(categories, values, color=colors)

# 添加标题和标签
plt.title('Bar Plot with Different Colors')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个每根柱子都有不同颜色的柱状图。

柱状图加入数据标签

有时候,我们希望在柱状图上显示具体的数据标签,以便更清晰地了解每根柱子的数值大小。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]

# 绘制柱状图
bars = plt.bar(categories, values)

# 添加数据标签
for bar in bars:
    plt.text(bar.get_x() + bar.get_width()/2, bar.get_height(), bar.get_height(), 
             ha='center', va='bottom')

# 添加标题和标签
plt.title('Bar Plot with Data Labels')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个柱状图上显示了具体数据标签的图形。

不规则柱状图

有时候,我们希望绘制出不规则的柱状图,比如渐变色柱状图或者镂空柱状图。

import numpy as np
import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]

# 不规则柱状图
gradient = np.linspace(0, 1, 4)
plt.bar(categories, values, color=plt.cm.Blues(gradient))

# 添加标题和标签
plt.title('Irregular Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个渐变色的不规则柱状图。

柱状图加入多重数据

有时候,我们需要在柱状图中同时显示多组数据,以便更好地比较不同数据之间的关系。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 25, 20, 30]

bar_width = 0.35

# 绘制多重数据柱状图
plt.bar(categories, values1, width=bar_width, label='Group 1')
plt.bar([val+bar_width for val in range(len(categories))], values2, width=bar_width, label='Group 2')

# 添加标题和标签
plt.title('Multiple Data Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 添加图例
plt.legend()

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个显示了多组数据的多重数据柱状图。

分组柱状图

除了堆叠和多重数据柱状图之外,还可以绘制分组柱状图来比较不同类别之间的数据。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 25, 20, 30]

bar_width = 0.35

# 绘制分组柱状图
plt.bar([val-bar_width/2 for val in range(len(categories))], values1, width=bar_width, label='Group 1')
plt.bar([val+bar_width/2 for val in range(len(categories))], values2, width=bar_width, label='Group 2')

# 添加标题和标签
plt.title('Grouped Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 添加图例
plt.legend()

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个分组柱状图,展示了分组柱状图的效果。

堆叠柱状图

堆叠柱状图可以显示整体数据的趋势,同时展示各组数据之间的比例关系。

import matplotlib.pyplot as plt

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 25, 20, 30]

# 绘制堆叠柱状图
plt.bar(categories, values1, label='Group 1', color='skyblue')
plt.bar(categories, values2, bottom=values1, label='Group 2', color='salmon')

# 添加标题和标签
plt.title('Stacked Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 添加图例
plt.legend()

# 显示图形
plt.show()

Output:

基于Matplotlib绘制柱状图

运行上面的代码,你将得到一个堆叠柱状图,展示了堆叠柱状图的效果。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程