2017-09-02 54 views
4

我想繪製兩個時間序列在相同的x軸和輔助y軸的同一圖上。我以某種方式實現了這一點,但兩個傳說重疊,無法給x軸和第二y軸賦予標籤。我嘗試在左上角和右上角放置兩個圖例,但它仍然不起作用。如何繪製兩個熊貓時間序列在同一個情節與傳說和次要y軸?

代碼:

plt.figure(figsize=(12,5)) 

# Number of request every 10 minutes 
log_10minutely_count_Series = log_df['IP'].resample('10min').count() 
log_10minutely_count_Series.name="Count" 
log_10minutely_count_Series.plot(color='blue', grid=True) 
plt.legend(loc='upper left') 
plt.xlabel('Number of request ever 10 minute') 

# Sum of response size over each 10 minute 
log_10minutely_sum_Series = log_df['Bytes'].resample('10min').sum() 
log_10minutely_sum_Series.name = 'Sum' 
log_10minutely_sum_Series.plot(color='red',grid=True, secondary_y=True) 
plt.legend(loc='upper right') 
plt.show() 

enter image description here

在此先感謝

回答

3

以下解決方案爲我工作。第一個將兩條線放在一個傳說中,第二個把線條分成兩個傳說,類似於上面的嘗試。

這裏是我的數據框

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) 
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) 

一個傳說的解決方案,信貸this StackOverflow的發佈

plt.figure(figsize=(12,5)) 
plt.xlabel('Number of requests every 10 minutes') 

ax1 = df.A.plot(color='blue', grid=True, label='Count') 
ax2 = df.B.plot(color='red', grid=True, secondary_y=True, label='Sum') 

h1, l1 = ax1.get_legend_handles_labels() 
h2, l2 = ax2.get_legend_handles_labels() 


plt.legend(h1+h2, l1+l2, loc=2) 
plt.show() 

One legend matplotlib plot

拆分傳說解

plt.figure(figsize=(12,5)) 
plt.xlabel('Number of requests every 10 minutes') 

ax1 = df.A.plot(color='blue', grid=True, label='Count') 
ax2 = df.B.plot(color='red', grid=True, secondary_y=True, label='Sum') 

ax1.legend(loc=1) 
ax2.legend(loc=2) 

plt.show() 

Split legend matplotlib plot

相關問題