【发布时间】:2021-07-16 06:17:00
【问题描述】:
我是 matplotlib 饼图的新手,我想知道如何在饼图中设置单个扇区的半径。我知道如何设置图表的整体半径,但想增加单个扇区的半径。例如,在这张图片中,与其他扇区相比,扇区“1”的半径更大。 请注意:我不想为了增加半径而爆炸该扇区。
如果有人知道,请告诉我!提前致谢。
【问题讨论】:
标签: python matplotlib pie-chart
我是 matplotlib 饼图的新手,我想知道如何在饼图中设置单个扇区的半径。我知道如何设置图表的整体半径,但想增加单个扇区的半径。例如,在这张图片中,与其他扇区相比,扇区“1”的半径更大。 请注意:我不想为了增加半径而爆炸该扇区。
如果有人知道,请告诉我!提前致谢。
【问题讨论】:
标签: python matplotlib pie-chart
直接的答案是,使用 Matplotlib 似乎无法在同一个饼图中设置多个半径。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
data = [4, 3, 2, 1]
fig, ax = plt.subplots(figsize=(4,4))
wedges, texts = ax.pie(data, radius=1)
for w in wedges:
w.set_width(.5)
wedges[0].set_radius(1.1)
wedges[1].set_radius(1)
wedges[2].set_radius(1)
wedges[3].set_radius(1)
plt.show()
radii = [w.radius for w in wedges]
print(radii)
我们可以看到半径实际上是不同的。
[1.1, 1, 1, 1]
一个有趣的旁注是切片宽度可以不同:
但是,您可以通过一些技巧来解决此问题。不是绘制一个饼图,而是绘制两个 - 第一个“放大”切片不可见,第二个“放大”切片设置为 only 可见切片。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
data = [4, 3, 2, 1]
fig, ax = plt.subplots(figsize=(4,4))
# Pie 1
wedges, texts = ax.pie(data, radius=1)
for w in wedges:
w.set_width(.5)
wedges[0].set_visible(False)
# Pie 2
wedges1, texts1 = ax.pie(data, radius=1.1)
for w in wedges1:
w.set_width(.6)
wedges1[1].set_visible(False)
wedges1[2].set_visible(False)
wedges1[3].set_visible(False)
plt.show()
添加了set_width 参数以使绘图成为像您的示例一样的“甜甜圈”绘图。请注意每个图表中实现所需外观所需的宽度值。
【讨论】: