在Python中创建循环类型的饼图子图

时间:2015-11-08 05:29:48

标签: python matplotlib

我正在尝试使用DF在绘图中创建一个饼图。但是我的所有饼图都不是实际的圆形,但前两个是椭圆形的。请指导我如何制作相同大小和圆形的所有子图。 我正在使用的代码如下所示

fig = plt.figure()
ax1 = plt.subplot(131)
ax2 = plt.subplot(132)
ax3 = plt.subplot(133)

ax1 = test1_pie.plot(kind='pie',y=test1,ax =ax1)
plt.axis('equal')

ax2 = test2_pie.plot(kind='pie',y=test2,ax=ax2)
plt.axis('equal')

ax3 = test3_pie.plot(kind='pie',y=test3,ax=ax3)
plt.axis('equal')

1 个答案:

答案 0 :(得分:0)

混合状态机pyplot调用和普通轴方法调用是个坏主意。这是原因的典型例子。

在这种情况下,

plt.<whatever>将引用最后创建的轴。你只是在最后一个轴对象上调用axis('equal')

最好坚持使用普通的axis-method api。

例如:

fig = plt.figure()
ax1 = plt.subplot(131)
ax2 = plt.subplot(132)
ax3 = plt.subplot(133)

ax1 = test1_pie.plot(kind='pie', y=test1, ax=ax1)
ax1.axis('equal')

ax2 = test2_pie.plot(kind='pie', y=test2, ax=ax2)
ax2.axis('equal')

ax3 = test3_pie.plot(kind='pie', y=test3, ax=ax3)
ax3.axis('equal')

作为一个独立的例子:

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(ncols=3)

for ax in axes:
    x = np.random.random(np.random.randint(3, 6))
    ax.pie(x)
    ax.axis('equal')

plt.show()

enter image description here