【问题标题】:Multiple pie charts using matplotlib使用 matplotlib 的多个饼图
【发布时间】:2014-08-08 13:58:32
【问题描述】:

我正在尝试使用 matplotlib 同时显示两个图表。

但我必须关闭一个图表,然后才能看到另一张图表。 无论如何要同时显示两个图表或更多数量的图表。

这是我的代码

num_pass=np.size(data[0::,1].astype(np.float))
num_survive=np.sum(data[0::,1].astype(np.float))
prop=num_survive/num_pass
num_dead=num_pass-num_survive
#print num_dead


labels='Dead','Survived'
sizes=[num_dead,num_survive]
colors=['darkorange','green']
mp.axis('equal')
mp.title('Titanic Survival Chart')
mp.pie(sizes, explode=(0.02,0), labels=labels,colors=colors,autopct='%1.1f%%', shadow=True, startangle=90)
mp.show()

women_only_stats = data[0::,4] == "female" 
men_only_stats = data[0::,4] != "female" 

# Using the index from above we select the females and males separately
women_onboard = data[women_only_stats,1].astype(np.float)     
men_onboard = data[men_only_stats,1].astype(np.float)

labels='Men','Women'
sizes=[np.sum(women_onboard),np.sum(men_onboard)]
colors=['purple','red']
mp.axis('equal')
mp.title('People on board')
mp.pie(sizes, explode=(0.01,0), labels=labels,colors=colors,autopct='%1.1f%%', shadow=True, startangle=90)
mp.show()

如何同时显示两个图表?

【问题讨论】:

  • 创建完所有地块后,您应该只在最后调用mp.show()
  • @Banana 也这样做了,它显示第二个饼图与第一个饼图完全重叠。我可以看到第一个饼图的值,但看不到实际图表。

标签: python numpy matplotlib


【解决方案1】:

有几种方法可以做到这一点,最简单的是使用多个数字。只需告诉matplotlib您正在处理不同的图形,然后同时显示它们:

import matplotlib.pyplot as plt

plt.figure(0)
# Create first chart here.

plt.figure(1)
# Create second chart here.

plt.show() #show all figures

【讨论】:

    【解决方案2】:

    除了香蕉的答案,您还可以将它们绘制在同一图中的不同子图中:

    from matplotlib import pyplot as plt
    import numpy as np
    
    data1 = np.array([0.9, 0.1])
    data2 = np.array([0.6, 0.4])
    
    # create a figure with two subplots
    fig, (ax1, ax2) = plt.subplots(1, 2)
    
    # plot each pie chart in a separate subplot
    ax1.pie(data1)
    ax2.pie(data2)
    
    plt.show()
    

    【讨论】:

    • 这些看起来像椭圆形图表,而不是圆形...如何调整它们的可视化?
    • @FC84 您可以将子图的纵横比设置为相等,例如plt.subplots(1, 2, subplot_kw={'aspect':'equal'})
    • @ali_m,OP 的复杂性:如何在单个图中绘制以指定 (x,y) 坐标为中心且大小不同的多个饼图?
    【解决方案3】:

    或者,您可以使用子图/多轴将多个饼图放在同一个图形上:

    mp.subplot(211)
    mp.pie(..)
    mp.subplot(212)
    mp.pie(...)
    mp.show()
    

    【讨论】:

      【解决方案4】:

      是的。 User:Banana 的这个答案对我有用。

      当我运行 plt.show() 时,我有 4 个图表,并且所有 4 个都作为单独的饼图弹出,所以我相信您可以使用任意数量的 figure 数字。

      plt.figure(0)   # Create first chart here and specify all parameters below.
      plt.figure(1)   # Create second chart here and specify all parameters below.
      plt.figure(3)   # Create third chart here and specify all parameters below.
      plt.figure(4)   # Create fourth chart here and specify all parameters below.
      plt.show()      # show all figures.
      

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多