Lon*_*Rob 4 python matplotlib pandas
与这个问题类似,我使用subplots关键字 inmatplotlib除了我正在绘制饼图和使用熊猫。
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')
Run Code Online (Sandbox Code Playgroud)
我可以通过像文档那样做并添加一个明确的来缓解这种情况figsize,但它看起来仍然很局促:
axes = df.plot(kind='pie', figsize=[10, 4], subplots=True)
for ax in axes:
ax.set_aspect('equal')
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法可以做得更好。tight_layout可能跟什么有关?
我认为您需要在 y 轴上填充标签,因此请使用 labelpad 即 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
Run Code Online (Sandbox Code Playgroud)
您可以使用 将标签向左移动ax.yaxis.set_label_coords(),然后将坐标调整为适合您的值。
两个输入set_label_coords是标签的x和y坐标,以轴分数坐标表示。
对于您的绘图,我发现 (-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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4151 次 |
| 最近记录: |