10 绘制饼图

10 绘制饼图

饼图是一种常用的图表类型,用于显示各个部分占整体的比例。这种图表非常适合展示相对分布情况。接下来,我们将通过一个简单的案例来学习如何使用 Matplotlib 绘制饼图。

1. 导入库

首先,我们需要导入必要的库。一般来说,我们需要 Matplotlib 库。确保你已经安装了该库,如果没有安装,可以使用以下命令:

1
pip install matplotlib

然后在代码中导入 pyplot 模块:

1
import matplotlib.pyplot as plt

2. 准备数据

在绘制饼图之前,首先需要准备数据。我们将使用一个示例公司销售额的比例数据:

1
2
3
# 数据
sizes = [15, 30, 45, 10] # 各个部分的大小
labels = ['A', 'B', 'C', 'D'] # 各部分的标签

在这个例子中,sizes 列表包含了四个部分的比例,而 labels 列表对应每个部分的标签。

3. 绘制饼图

接下来,我们使用 plt.pie() 函数来绘制饼图。该函数的基本语法如下:

1
plt.pie(sizes, labels=labels, autopct='%1.1f%%')

参数解释:

  • sizes:各个部分的大小。
  • labels:各部分的标签。
  • autopct:用于显示各部分占比,格式设置为 '%1.1f%%' 可以显示到小数点后一位。

下面是完整的绘图代码:

1
2
3
4
5
6
7
8
9
10
11
12
import matplotlib.pyplot as plt

# 数据
sizes = [15, 30, 45, 10] # 各个部分的大小
labels = ['A', 'B', 'C', 'D'] # 各部分的标签

# 绘制饼图
plt.figure(figsize=(8, 6)) # 设置图形大小
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)
plt.axis('equal') # 保证饼图为圆形
plt.title('各部分销售额比例') # 图表标题
plt.show() # 显示绘图

4. 自定义饼图

我们还可以通过其他参数来进一步自定义饼图。比如,可以添加颜色、分离某一部分、调整起始角度等。以下示例中添加了颜色和突出显示一部分:

1
2
3
4
5
6
7
8
9
10
11
12
# 数据
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']
colors = ['gold', 'lightcoral', 'lightskyblue', 'lightgreen'] # 填充颜色
explode = (0.1, 0, 0, 0) # 突出显示A部分

# 绘制饼图
plt.figure(figsize=(8, 6))
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', explode=explode, startangle=140)
plt.axis('equal')
plt.title('各部分销售额比例 (自定义)')
plt.show()

在这个例子中,explode 参数使得 A 部分被突出显示。colors 列表改变了各部分的颜色。

结论

通过以上步骤,我们成功地使用 Matplotlib 绘制了基本的饼图,并学习了一些简单的自定义技巧。饼图是一种非常有效的可视化形式,可以清晰地展示数据的比例关系。

11 修改图形样式

11 修改图形样式

在使用 Matplotlib 绘图时,图形的样式对可视化效果至关重要。通过相应的设置,您可以轻松地调整线条、颜色、标记和背景等元素。以下将介绍一些常见的样式修改方法。

1. 修改线条样式

在绘制图形时,可以通过 linestyle 参数来设置线条样式。常用的线条样式包括实线、虚线和点划线等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 绘制图形
plt.plot(x, y1, linestyle='-', color='b', label='sin(x)') # 实线
plt.plot(x, y2, linestyle='--', color='r', label='cos(x)') # 虚线
plt.legend()
plt.title('Line Style Example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.grid(True)
plt.show()

线条样式选项

  • '-' : 实线
  • '--' : 虚线
  • ':' : 点线
  • '-.' : 点划线

2. 修改线条颜色

颜色可以通过 color 参数轻松设置。可以使用颜色名称、HEX 代码或 RGB 值。

1
2
plt.plot(x, y1, color='blue', label='sin(x)')
plt.plot(x, y2, color='#FF5733', label='cos(x)') # 使用HEX颜色

3. 修改标记样式

除了线条样式外,marker 参数允许我们定义标记样式,用于在数据点上显示符号。

1
2
plt.plot(x, y1, marker='o', label='sin(x)')  # 圆形标记
plt.plot(x, y2, marker='^', label='cos(x)') # 三角形标记

常用标记样式

  • 'o' : 圆形
  • '^' : 三角形
  • 's' : 方形
  • '*' : 星形

4. 修改背景和网格

通过设置图形的背景颜色和网格线的样式,可以提升图形的可读性。

1
2
plt.figure(facecolor='lightgrey')  # 修改图形背景颜色
plt.grid(color='white', linestyle='--', linewidth=0.5) # 网格线样式

5. 完整示例

整合以上所有元素,这里是一个完整的案例,展示了如何使用不同的样式来生成图形。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 设置图形样式
plt.figure(figsize=(10, 5), facecolor='lightgrey')
plt.plot(x, y1, linestyle='-', color='blue', marker='o', markersize=5, label='sin(x)')
plt.plot(x, y2, linestyle='--', color='red', marker='^', markersize=5, label='cos(x)')

# 添加图表内容
plt.title('Modified Line Style Example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.grid(color='white', linestyle='--', linewidth=0.5)
plt.legend()
plt.tight_layout()

# 显示图形
plt.show()

通过上述示例,您可以看到如何有效地调整绘图样式,使图形更加美观且易于理解。Matplotlib 提供了丰富的样式选项,您可以根据需求进行定制。

12 添加注释与图例

12 添加注释与图例

在使用 Matplotlib 进行绘图时,添加注释和图例可以大大提升图表的可读性和信息传达效果。以下内容将介绍如何在绘图中添加注释和图例。

添加注释

注释可以帮助观众理解图中某些特定的数据点或趋势。在 Matplotlib 中,你可以使用 plt.annotate() 函数来添加注释。

案例:添加注释

以下是一个简单的示例,演示如何在折线图上添加注释。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import matplotlib.pyplot as plt

# 创建数据
x = [0, 1, 2, 3, 4, 5]
y = [0, 1, 4, 9, 16, 25]

# 绘制图形
plt.plot(x, y, marker='o')

# 添加注释
plt.annotate('最大值\n(5, 25)', xy=(5, 25), xytext=(3, 20),
arrowprops=dict(facecolor='black', shrink=0.05))

# 添加标题和标签
plt.title('平方数图')
plt.xlabel('x')
plt.ylabel('y')

# 显示图形
plt.show()

在上面的代码中,plt.annotate() 函数的参数如下:

  • xy 表示需要注释的位置(这里是(5, 25))。
  • xytext 表示注释文本的位置(这里是(3, 20)),可以使用此参数来控制文本相对于箭头的位置。
  • arrowprops 用于设置箭头的属性,使注释更直观。

添加图例

图例能够帮助观众快速了解图中各条曲线或点代表的意义。在 Matplotlib 中,可以通过 plt.legend() 函数添加图例。

案例:添加图例

在下面的示例中,我们将绘制两条曲线,并为每条曲线添加图例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import matplotlib.pyplot as plt

# 创建数据
x = [0, 1, 2, 3, 4, 5]
y1 = [0, 1, 4, 9, 16, 25]
y2 = [0, 1, 8, 27, 64, 125]

# 绘制曲线
plt.plot(x, y1, label='y = x²', marker='o')
plt.plot(x, y2, label='y = x³', marker='s')

# 添加标题和标签
plt.title('平方与立方')
plt.xlabel('x')
plt.ylabel('y')

# 添加图例
plt.legend()

# 显示图形
plt.show()

在这个示例中,我们为每条曲线传递了一个 label 参数,这样 plt.legend() 就可以自动识别并添加相应的图例。

小结

通过使用 plt.annotate()plt.legend(),我们可以在 Matplotlib 图表中有效地添加注释和图例。这些附加信息不仅能够帮助理清数据之间的关系,还能够使图形展示更加专业。