【问题标题】:How to plot multiple bars in the same graph如何在同一图表中绘制多个条形图
【发布时间】:2016-06-27 01:00:42
【问题描述】:

我想为每个组绘制 6 个不同的条形图(AWA、Rem、S1、S2、SWS、stades)。有4组。

我知道问题出在:fig, ax=plt.subplots() 我该如何解决这个问题?

    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline

    N = 4 # groups: EEG_EMG_EOG_twins(28), EEG_EMG_EOG(26), EEG_twins(22), EEG(20)

    AWA = (99, 98, 98, 95)  #EEG_EMG_EOG_twins(28), EEG_EMG_EOG(26), EEG_twins(22), EEG(20)

    ind = np.arange(N)  # the x locations for the groups
    width = 0.35       # the width of the bars

    fig, ax = plt.subplots()
    rects1 = ax.bar(ind, AWA, width, color='r')

    Rem = (100, 99, 97, 94)  #EEG_EMG_EOG_twins(28), EEG_EMG_EOG(26), EEG_twins(22), EEG(20)
    rects2 = ax.bar(ind + width, Rem, width, color='y')

    S1 = (98, 97, 95, 93)  #EEG_EMG_EOG_twins(28), EEG_EMG_EOG(26), EEG_twins(22), EEG(20)
    rects3 = ax.bar(ind + width, S1, width, color='b')

    S2 = (99, 99, 95, 92)  #EEG+EMG+EOG+twins(28), EEG+EMG+EOG(26), EEG+twins(22), EEG(20)
    rects4 = ax.bar(ind + width, S2, width, color='g')

    SWS = (99, 100, 95, 94)  #EEG+EMG+EOG+twins(28), EEG+EMG+EOG(26), EEG+twins(22), EEG(20)
    rects5 = ax.bar(ind + width, SWS, width, color='y')

    stades = (99, 98, 92, 86)  #EEG+EMG+EOG+twins(28), EEG+EMG+EOG(26), EEG+twins(22), EEG(20)
    rects6 = ax.bar(ind + width, stades, width, color='b')

    # add some text for labels, title and axes ticks
    ax.set_ylabel('Accuracy')
    ax.set_title('Accuracy by group - RF')
    ax.set_xticks(ind + width)
    ax.set_xticklabels(('G1', 'G2', 'G3', 'G4'))

    ax.legend((rects1[0], rects2[0], rects3[0], rects4[0], rects5[0], rects6[0]), ('AWA', 'Rem', 'S1', 'S2', 'SWS', 'stades'))

    plt.show()

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    如果是你想要的子图,你可以这样做:

    import numpy as np
    import matplotlib.pyplot as plt
    
    N = 4 # groups: EEG_EMG_EOG_twins(28), EEG_EMG_EOG(26), EEG_twins(22), EEG(20)
    
    data = ((99, 98, 98, 95),
            (100, 99, 97, 94),
            (98, 97, 95, 93),
            (99, 99, 95, 92),
            (99, 100, 95, 94),
            (99, 98, 92, 86))
            #EEG_EMG_EOG_twins(28), EEG_EMG_EOG(26), EEG_twins(22), EEG(20)
    
    labels = ('AWA', 'Rem', 'S1', 'S2', 'SWS', 'stades')
    
    ind = np.arange(N)  # the x locations for the groups
    width = 0.35       # the width of the bars
    
    fig = plt.figure()
    fig.suptitle('Accuracy by group - RF')
    
    for i in range(len(labels)):
        ax = plt.subplot(3,2,i+1)
        ax.bar(ind + width, data[i], width, color='y')
        ax.set_ylabel('Accuracy')
        ax.set_title(labels[i])
        ax.set_xticks(ind + width)
        ax.set_xticklabels(('G1', 'G2', 'G3', 'G4'))
    
    plt.show()
    

    【讨论】:

      【解决方案2】:

      另一种方法是将所有的条彼此相邻放置:

      import numpy as np
      import matplotlib.pyplot as plt
      
      N = 4 # groups: EEG_EMG_EOG_twins(28), EEG_EMG_EOG(26), EEG_twins(22), EEG(20)
      
      data = ((99, 98, 98, 95),
              (100, 99, 97, 94),
              (98, 97, 95, 93),
              (99, 99, 95, 92),
              (99, 100, 95, 94),
              (99, 98, 92, 86))
              #EEG_EMG_EOG_twins(28), EEG_EMG_EOG(26), EEG_twins(22), EEG(20)
      
      labels = ('AWA', 'Rem', 'S1', 'S2', 'SWS', 'stades')
      k = len(data)
      colors = ('r', 'y', 'b', 'g', 'y', 'b')
      ind = np.arange(N)  # the x locations for the groups
      width = 0.35       # the width of the bars
      
      indshift = np.linspace(-width/2,width/2,k)
      
      fig = plt.figure()
      fig.suptitle('Accuracy by group - RF')
      for i in range(k):
          plt.bar(ind + indshift[i], data[i], width/k, color=colors[i])
      ax = gca()
      ax.set_ylabel('Accuracy')
      ax.set_xticks(ind + width)
      ax.set_xticklabels(('G1', 'G2', 'G3', 'G4'))
      plt.legend(labels)
      
      plt.show()
      

      【讨论】:

        猜你喜欢
        • 2013-04-29
        • 1970-01-01
        • 2019-07-15
        • 2019-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-22
        相关资源
        最近更新 更多