2016-06-27 4 views
0

각 그룹에 대해 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() 

enter image description here

답변

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() 
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') 
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() 
관련 문제