2017-03-06 40 views
-1

我有一個數據幀稱爲DF:的Python在同一地塊的幾個地塊

IdDeviceType . NameDevice IdBox value hour 
    471   Heater  4  0.3  3 
    486   Thermo  5  0.6  14 
    492   Censor  8  0.8  22 

我想繪製加熱器和熱是指由每小時每平分組值(平是IdBox號)。

def my_plot(df2, x1, x2, idbox): 
    dev_id1 = df2['NameDevice'].isin(x1) 
    df2 = df2[dev_id] 
    print (set(df2.value.values)) 
    vals1 = [df2[df2['IdBox'] == idb].groupby('hour')['value'].mean() 
     for idb in idbox] 
    for val1 in vals1: 
    plot1 = plt.plot(val1.values) 

    dev_id2 = df2['NameDevice'].isin(x2) 
    df2 = df2[dev_id] 
    print (set(df2.value.values)) 
    vals2 = [df2[df2['IdBox'] == idb].groupby('hour')['value'].mean() 
     for idb in idboxe] 
    for val2 in vals2: 
    plot2 = plt.plot(vals2.values) 

plt.xlabel('hour') 
plt.ylabel('mean Value') 
plt.show() 

my_plot(df, ['Heater'],['Thermo'], [7]) 
+0

'plt.show()'必須for循環之外。如果這不是問題,則需要提供[mcve]。 – ImportanceOfBeingErnest

+0

我改變它來說清楚 – cloclo

+1

這是**不是** [mcve]。它不會工作,因爲你在調用你的'my_plot2'函數之前調用'plt.show()'。 – ImportanceOfBeingErnest

回答

0

根據http://matplotlib.org/users/pyplot_tutorial.html你應該只能夠是這樣的:

t = np.arange(0., 5., 0.2) 

# red dashes, blue squares and green triangles 
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^') 
plt.show() 

你只需要使用foramt:(x,y, style, x, y, style.....)遍地