增加饼图中单个扇区的半径matplotlib
increase radius of a single sector in pie chart matplotlib
我是matplotlib饼图新手,想知道如何设置饼图中单个扇区的半径。我知道如何设置图表的整体半径,但想增加单个扇区的半径。例如,在此图片中,扇区“1”与其他扇区相比具有更大的半径。 请注意:我不想为了增加半径而爆炸该扇区。
有知道的请告诉我!提前致谢。
直接的答案是,使用 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
参数以使绘图成为像您的示例一样的“甜甜圈”图。请注意每个图表中实现所需外观所需的宽度值。
我是matplotlib饼图新手,想知道如何设置饼图中单个扇区的半径。我知道如何设置图表的整体半径,但想增加单个扇区的半径。例如,在此图片中,扇区“1”与其他扇区相比具有更大的半径。 请注意:我不想为了增加半径而爆炸该扇区。
有知道的请告诉我!提前致谢。
直接的答案是,使用 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
参数以使绘图成为像您的示例一样的“甜甜圈”图。请注意每个图表中实现所需外观所需的宽度值。