如何使用 Python 可视化技术绘制和嵌套圆环图

파이썬 시각화 중첩 도넛 차트

Python 通过可视化技术,您可以用漂亮、易懂的图表来展示复杂的数据。 特别是,甜甜圈图表是将比例可视化的绝佳工具。但不要满足于仅仅表示比例!通过嵌套甜甜圈图,您可以创建新潮而深入的可视化图表。

在本文中,我们将使用 Python 可视化库 matplotlib如何逐步绘制甜甜圈图在本教程中。我们将介绍从基本的甜甜圈图到更高级的嵌套甜甜圈图绘制技巧,敬请关注!

什么是甜甜圈图表?

圆环图是 饼状图的变体,中心是空心的这块空白处使图表更加整洁,也是添加其他信息的好地方。

主要特点

  • 数据传输速率直观的方式。
  • 叠加多个数据可实现多维可视化。
  • 简洁、现代的设计非常适合新潮的数据可视化。

使用 Python 可视化技术绘制基本图表

파이썬 시각화 도넛 차트

首先,让我们看看如何绘制类似上图的基本图表,我们将使用 matplotlib在页面上。

Python 代码示例 - 基本甜甜圈图

导入 # 库
import matplotlib.pyplot as plt

设置 # 数据
labels = ['Country A', 'Country B', 'Country C', 'Country D'] 标签 = ['Country A', 'Country B', 'Country C', 'Country D'] 国家 A
sizes = [30, 20, 35, 15] 大小
颜色 = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99'].

创建 # 甜甜圈图表
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, colours=colours, wedgeprops=dict(width=0.3), autopct='%1.1f%%')

添加 # 中心圆(使其呈甜甜圈状)
center_circle = plt.Circle((0, 0), 0.70, fc='white')
fig.gca().add_artist(center_circle)

设置 # 图表标题
plt.title('Basic Donut Chart')
plt.show()

绘制嵌套图表

嵌套图表显示了 两层同时,每一层都能提供更丰富的数据视图。

Python 代码示例 - 嵌套圆环图

import matplotlib.pyplot as plt

设置 # 外部甜甜圈数据
outer_labels = ['德国'、'法国'、'中国'、'英国'、'意大利'] .
outer_sizes = [30, 23, 16, 18, 13] 外部尺寸

# 内部甜甜圈数据设置
inner_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] 内层甜甜圈数据设置
inner_sizes = [15, 15, 12, 11, 8, 8, 8, 9, 9, 9, 7, 6] 内尺寸

# 颜色设置
outer_colours = plt.cm.Blues([0.6, 0.7, 0.8, 0.9, 1.0])
inner_colours = plt.cm.RdYlBu_r([0.6, 0.6, 0.7, 0.7, 0.8, 0.8, 0.8, 0.9, 0.9, 1.0, 1.0])

创建 # 嵌套圆环图
fig, ax = plt.subplots()

# 外层甜甜圈图
ax.pie(outer_sizes, labels=outer_labels, radius=1.3, colors=outer_colours、
       wedgeprops=dict(width=0.3), labeldistance=1.1, autopct='%1.1f%%', pctdistance=0.85)

# 内甜甜圈层
ax.pie(inner_sizes, labels=inner_labels, radius=1.0, colors=inner_colors、
       wedgeprops=dict(width=0.3), labeldistance=0.7, autopct='%1.1f%%', pctdistance=0.6)

挖空 # 的中心(完成甜甜圈形状的绘制)
center_circle = plt.Circle((0, 0), 0.6, fc='white')
fig.gca().add_artist(center_circle)

设置 # 标题(使用 pad 选项调整间距)
plt.title('Improved Nested Donut Chart with Adjusted Labels', pad=30)

设置 # 布局
plt.tight_layout()
plt.show()

常见错误

  • 数据过多时图表:项目过多会使图表杂乱无章。只包含关键数据。
  • 色彩杂乱颜色:使用相似的颜色会让人难以区分物品。使用调色板。
  • 比率和标签不匹配: 自动执行以确保显示正确的比例。

常见问题(FAQ)

Q1. 何时使用本图表?
该图表显示了这一比例
非常适合需要比较但又希望设计简洁、现代的情况。

问题 2 嵌套圆环图的目的是什么?
它在同时比较和分析两层数据时非常有效。

问题 3:它与饼图有什么不同?
甜甜圈图表中间是空心的,用于显示更多信息或更美观。

总结

甜甜圈图是 Python 可视化中的一种流行技术,它打破了饼图的单调乏味。从基本图表到嵌套图表,您都已经掌握,现在是时候使用真实数据创建自己的甜甜圈图表了!你将离爱上数据可视化更近一步。

顺便提一句,Python 可视化领域有很多人从事时间序列分析。 Python 数据分析示例:标准普尔 500 指数股票数据的时间序列分析和未来价格预测 查看本帖,了解如何操作!

# 代码说明

绘制基本图表

导入 # 库
import matplotlib.pyplot as plt  
  1. 导入图书馆
  • matplotlib.pyplot:""""""""""""等字样。 matplotlib
  • 该模块使用 图表 用于绘制背面。
# 数据设置
标签 = [ '国家 A'、'国家 B'、'国家 C'、'国家 D']
尺寸 = [30、20、35、15]
颜色 = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99'].  
  1. 数据设置
  • 标签:每个片段(部分)的名称。例如国家 A"、"国家 B "等。
  • 尺寸:设置每件作品的比例。例如30%、20%、35%、15%。
  • 色素颜色代码:每个部分使用的颜色代码。
    • #ff9999浅粉色
    • #66b3ff浅蓝色
    • #99ff99:浅绿色
    • #ffcc99颜色:橙色
创建 # 甜甜圈图表
fig, ax = plt.subplots()  
  1. 创建图表
  • 枫叶: 数字(画布)和 (将绘制图形的区域)。
  • plt.subplots()准备绘制新图表的空间。
ax.pie(sizes, labels=labels, colours=colours, wedgeprops=dict(width=0.3), autopct='%1.1f%%')  
  1. 创建甜甜圈图表
  • 尺寸表示各部分(件)所占的比例。
  • 标签=标签设置显示在 : 部分的标签(名称)。
  • 颜色=颜色设置 : 部分的颜色。
  • wedgeprops=dict(width=0.3): 甜甜圈形状来调整片段的宽度。
    • 宽度=0.3是将 70% 内部全部清空的设置。
  • autopct='%1.1f%%'显示每个部件的比率(%)。
    • %1.1f: 设置显示到小数点后第一位。
添加 # 中心圆(使其呈甜甜圈状)
center_circle = plt.Circle((0, 0), 0.70, fc='white')
fig.gca().add_artist(center_circle)  
  1. 添加一个中心圆(使其呈甜甜圈状)
  • plt.Circle((0, 0), 0.70, fc='white'):
    • (0, 0):圆心的坐标。
    • 0.70设置圆的半径。
    • fc='白色:将圆的颜色设置为白色。
  • fig.gca().add_artist(center_circle):
    • 将上面创建的白色圆圈添加到当前坐标轴(图形区域)上。
  • 该代码允许我们创建一个居中的空 甜甜圈形状已完成。
设置 # 图表标题
plt.title('Basic Donut Chart')  
  1. 设置图表标题
  • plt.title()在图表顶部添加标题。
  • 基本甜甜圈图表标题:图表的标题字符串。
plt.show()  
  1. 输出结果
  • plt.show()在屏幕上显示图表。
  • 该命令必须在最终输出图表前执行。

绘制嵌套图表

import matplotlib.pyplot as plt  
  1. 导入图书馆
  • 数据可视化 matplotlib"(《世界人权宣言》) pyplot 导入模块。
# 外部甜甜圈数据设置
outer_labels = [ '德国'、'法国'、'中国'、'英国'、'意大利']
outer_sizes = [30, 23, 16, 18, 13] 外部尺寸  
  1. 设置外部甜甜圈数据
  • outer_labels名称:外层甜甜圈上出现的每一块的名称。
  • 外部尺寸:表示外层甜甜圈(%)每块所占的比例。
# 内部甜甜圈数据设置
inner_labels = ['A'、'B'、'C'、'D'、'E'、'F'、'G'、'H'、'I'、'J']
inner_sizes = [15, 15, 12, 11, 8, 8, 8, 9, 9, 9, 7, 6] 内尺寸  
  1. 设置内部甜甜圈数据
  • inner_labels:内甜甜圈上出现的每件作品的名称。
  • 内部尺寸:内层甜甜圈每块的比例除以外层甜甜圈的比例。
# 颜色设置
outer_colours = plt.cm.Blues([0.6, 0.7, 0.8, 0.9, 1.0])
inner_colours = plt.cm.RdYlBu_r([0.6, 0.6, 0.7, 0.7, 0.8, 0.8, 0.8, 0.9, 0.9, 1.0, 1.0])  
  1. 颜色设置
  • plt.cm.Blues颜色:为外层甜甜圈设计一个蓝色色调。
  • plt.cm.RdYlBu_r颜色:使用红黄蓝组合作为内部甜甜圈的调色板。
  • [] 内部的数字设定了颜色的深浅(0 到 1)。
创建 # 嵌套圆环图
fig, ax = plt.subplots()  
  1. 创建图表
  • 枫叶创建新的图形和坐标轴对象。
  • plt.subplots()准备画布,在上面绘制图表。
# 甜甜圈外层
ax.pie(outer_sizes, labels=outer_labels, radius=1.3, colors=outer_colors、
       wedgeprops=dict(width=0.3), labeldistance=1.1, autopct='%1.1f%%', pctdistance=0.85)  
  1. 创建外部甜甜圈
  • 外部尺寸输入外层甜甜圈的百分比。
  • labels=outer_labels标签:设置每件作品上显示的标签(国家名称)。
  • 半径=1.3设置外甜甜圈的半径。
  • colours=outer_colours设置外层甜甜圈的颜色。
  • wedgeprops=dict(width=0.3)设置每一块的宽度,以创建一个甜甜圈形状。
  • 标签距离=1.1将:标签(国名)移到甜甜圈外面一点。
  • autopct='%1.1f%%'小数点后一位数:显示各部分的比例。
  • pctdistance=0.85将 :proportion 文字的位置靠近甜甜圈的内侧。
# 内甜甜圈层
ax.pie(inner_sizes, labels=inner_labels, radius=1.0, colors=inner_colors、
       wedgeprops=dict(width=0.3), labeldistance=0.7, autopct='%1.1f%%', pctdistance=0.6)  
  1. 创建内部甜甜圈
  • 内部尺寸输入里面甜甜圈的百分比。
  • labels=inner_labels设置每件作品上显示的标签。
  • 半径=1.0:设置内甜甜圈的半径。
  • colours=inner_colours设置内部甜甜圈的颜色。
  • wedgeprops=dict(width=0.3)制作一个甜甜圈形状。
  • 标签距离=0.7:将标签(字符串)放在靠近片段内部的位置。
  • autopct='%1.1f%%'显示比率到小数点后一位数。
  • pctdistance=0.6将 : 比例文本进一步向内移动。
挖空 # 的中心(完成甜甜圈形状)
center_circle = plt.Circle((0, 0), 0.6, fc='white')
fig.gca().add_artist(center_circle)  
  1. 中心空地
  • plt.Circle((0, 0), 0.6, fc='white')在中间画一个白色圆圈,完成甜甜圈的造型。
  • 添加艺术家(center_circle):在图表上添加一个白色圆圈。
  • (0, 0):中心坐标。
  • 0.6:白色圆圈的半径。
# 标题设置(使用 pad 选项调整间距)
plt.title('Improved Nested Donut Chart with Adjusted Labels', pad=30)  
  1. 设置标题和调整间距
  • plt.title()在图表顶部添加标题。
  • 垫=30注意:将标题和图表之间的间距调整为 30 像素。
  • "带调整标签的改进型嵌套甜甜圈图表"图表标题。
# 布局设置
plt.tight_layout()  
  1. 优化布局
    • plt.tight_layout()自动调整边距,使图表元素不会相互重叠。
plt.show()
  1. 输出结果
    • 在屏幕上显示图表。

类似文章