如何改进 pyplot 饼图中分数标签的旋转
How can I improve the rotation of fraction labels in a pyplot pie chart
我复制了以下示例代码,稍作改动。我想以一定角度旋转分数。我实现了我的目标,但我的问题是是否有更简单的方法来旋转分数:
import matplotlib.pyplot as plt
import matplotlib
# Data to plot
labels = 'Python', 'C++', 'Ruby', 'Java'
sizes = [215, 130, 245, 210]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0) # explode 1st slice
# Plot
pie_properties = plt.pie(sizes, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=False, startangle=140, pctdistance=0.8, radius = 0.5)
# Rotate fractions
# [0] = wedges, [1] = labels, [2] = fractions
fraction_text_list = pie_properties[2]
for text in fraction_text_list:
text.set_rotation(315)
plt.axis('equal')
plt.show()
是否可以改进这个?
问题中旋转自动百分比标签的方法已经很简单了。如果 "easier" 你的意思是 "shorter",你可以将整个命令放在一行中:
import matplotlib.pyplot as plt
# Data to plot
labels = 'Python', 'C++', 'Ruby', 'Java'
sizes = [215, 130, 245, 210]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0) # explode 1st slice
# Plot
w,l,p = plt.pie(sizes, labels=labels, colors=colors,
autopct='%1.1f%%', startangle=140, pctdistance=0.8, radius = 0.5)
[t.set_rotation(315) for t in p]
plt.axis('equal')
plt.show()
我复制了以下示例代码,稍作改动。我想以一定角度旋转分数。我实现了我的目标,但我的问题是是否有更简单的方法来旋转分数:
import matplotlib.pyplot as plt
import matplotlib
# Data to plot
labels = 'Python', 'C++', 'Ruby', 'Java'
sizes = [215, 130, 245, 210]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0) # explode 1st slice
# Plot
pie_properties = plt.pie(sizes, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=False, startangle=140, pctdistance=0.8, radius = 0.5)
# Rotate fractions
# [0] = wedges, [1] = labels, [2] = fractions
fraction_text_list = pie_properties[2]
for text in fraction_text_list:
text.set_rotation(315)
plt.axis('equal')
plt.show()
是否可以改进这个?
问题中旋转自动百分比标签的方法已经很简单了。如果 "easier" 你的意思是 "shorter",你可以将整个命令放在一行中:
import matplotlib.pyplot as plt
# Data to plot
labels = 'Python', 'C++', 'Ruby', 'Java'
sizes = [215, 130, 245, 210]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0) # explode 1st slice
# Plot
w,l,p = plt.pie(sizes, labels=labels, colors=colors,
autopct='%1.1f%%', startangle=140, pctdistance=0.8, radius = 0.5)
[t.set_rotation(315) for t in p]
plt.axis('equal')
plt.show()