与this question类似,我使用subplots
中的matplotlib
关键字,除了我正在绘制饼图和使用pandas。
当标签接近水平时,subplots
上的标签会与切片标签一起崩溃:
first = pd.Series({'True':2316, 'False': 64})
second = pd.Series({'True':2351, 'False': 29})
df = pd.concat([first, second], axis=1, keys=['First pie', 'Second pie'])
axes = df.plot(kind='pie', subplots=True)
for ax in axes:
ax.set_aspect('equal')
我可以通过the docs做并添加一个明确的figsize
来缓解这种情况,但它看起来仍然非常狭窄:
axes = df.plot(kind='pie', figsize=[10, 4], subplots=True)
for ax in axes:
ax.set_aspect('equal')
有没有一种更好的方法可以做得更好。可能与tight_layout
有关吗?
答案 0 :(得分:3)
我认为你需要在y轴上填充标签,所以使用标签,即ax.yaxis.labelpad = 20
axes = df.plot(kind='pie', figsize=[10, 4], subplots=True)
for ax in axes:
ax.set_aspect('equal')
ax.yaxis.labelpad = 20
答案 1 :(得分:3)
您可以使用ax.yaxis.set_label_coords()
将标签移到左侧,然后将坐标调整为适合您的值。
set_label_coords
的两个输入是标签的x
和y
坐标,位于Axes分数坐标中。
对于你的情节,我发现(-0.15,0.5)运作良好(即x=-0.15
表示轴左侧轴宽的15%,而y=0.5
表示中间的一半轴)。一般情况下,假设您始终希望标签在y轴上居中,则只需调整x
坐标。
我还使用subplots_adjust(wspace=0.5)
在图表之间添加了一些空格,这样轴标签就不会与另一个饼图中的False
标签重叠。
import pandas as pd
import matplotlib.pyplot as plt
first = pd.Series({'True':2316, 'False': 64})
second = pd.Series({'True':2351, 'False': 29})
df = pd.concat([first, second], axis=1, keys=['First pie', 'Second pie'])
axes = df.plot(kind='pie', subplots=True)
for ax in axes:
ax.set_aspect('equal')
ax.yaxis.set_label_coords(-0.15, 0.5)
plt.subplots_adjust(wspace=0.5)
plt.show()