Matplotlib - 饼图
Matplotlib - 饼图
Section titled “Matplotlib - 饼图”饼图(Pie Chart)将单个系列的数据显示为圆形的切片,其中每个切片的大小(角度)与其相对于所有项目总和的值成比例。它们用于显示整体的构成。
注意: 虽然饼图在视觉上很简单,但可能具有误导性,尤其是在比较大小相似的切片或类别很多时。对于比较数量而言,柱状图(Bar Chart)通常是更好的替代方案。主要在显示少量类别的“部分-整体”关系时使用饼图。
ax.pie() 方法(面向对象 API)用于生成饼图。
ax.pie() 的关键参数:
Section titled “ax.pie() 的关键参数:”| 参数 | 说明 |
|---|---|
x | 一个包含数据值(切片大小)的一维类数组对象。Matplotlib 会自动计算百分比。 |
labels | 一个字符串列表,为每个切片提供标签。 |
colors | 一个颜色序列,用于切片。如果为 None,则使用默认颜色循环。 |
autopct | 一个字符串或函数,用于格式化显示在每个切片上的数值。常见格式:'%1.1f%%'(显示一个小数位的百分比)。 |
explode | 一个与 x 长度相同的元组或列表,指定每个切片偏移半径的比例。用于强调某个切片(例如,(0, 0.1, 0, 0) 偏移第二个切片)。 |
startangle | 逆时针旋转第一个切片的起始位置,相对于 x 轴(默认 0 度)。 |
shadow | 如果为 True,则在饼图下方绘制阴影。 |
pctdistance | 绘制 autopct 文本的半径比例(默认 0.6)。 |
labeldistance | 绘制标签的半径比例(默认 1.1)。 |
示例:课程报名情况
Section titled “示例:课程报名情况”让我们可视化学生在不同编程语言课程中的分布。
import matplotlib.pyplot as pltimport numpy as np
# 数据:编程语言和学生人数languages = ['C', 'C++', 'Java', 'Python', 'PHP']students = [23, 17, 35, 29, 12]
# 创建 Figure 和 Axesfig, ax = plt.subplots(figsize=(7, 7)) # 方形图对饼图更友好
# 稍微突出 'Python' 切片explode = (0, 0, 0, 0.1, 0) # 0.1 表示半径偏移 10%
# 创建饼图wedges, texts, autotexts = ax.pie( students, labels=languages, autopct='%1.1f%%', # 百分比显示的格式 startangle=90, # 从 90 度 (顶部) 开始绘制第一个切片 explode=explode, # 应用突出效果 shadow=True, # 添加阴影 colors=['gold', 'lightcoral', 'lightskyblue', 'lightgreen', 'yellowgreen'] # 可选的自定义颜色)
# 确保饼图是圆形ax.axis('equal')
# 添加标题ax.set_title('Student Enrollment by Programming Language')
# 优化布局plt.tight_layout()plt.show()此代码生成一个饼图,显示报名每种语言的学生比例。通过设置 explode 参数,‘Python’ 切片稍微偏移(突出)以示强调。每个切片上显示百分比,标签标识语言,添加了阴影效果,并且 ax.axis('equal') 确保图表是圆形而不是椭圆形。
ax.pie 函数返回三个列表:wedges(表示切片的 Patch 对象),texts(表示标签的 Text 对象),和 autotexts(表示数值标签的 Text 对象),如果需要进一步自定义,可以使用这些对象。