2016-07-13 107 views
0

任何想法我的代碼中缺少什麼以避免部分圖/畫布和日期超出PNG圖像?是否可以用180度或垂直寫日期不使用太多的圖表空間?熊貓和matplotlib做線性圖

我的數據集是:

15/03/16 3000 300 200 
12/04/16 3000 300 300 
10/05/16 500 500 400 
12/06/16 1000 600 500 
14/07/16 1250 300 500 
21/07/16 2000 300 50 
15/08/16 3000 300 200 
12/09/16 3000 300 300 
10/10/16 500 500 400 
12/11/16 1000 600 500 
15/11/16 1250 300 500 
21/12/16 1000 500 50 

Python代碼是:

import pandas 
import matplotlib.pyplot as plt 

df = pandas.read_csv('data.csv', delimiter=';', 
        index_col=0, 
        parse_dates=[0], dayfirst=True, 
        names=['date','a','b','c']) 
df.plot() 
df.plot(subplots=True, figsize=(6, 6)) 

plt.savefig('sampledata1.png') 

和PNG看起來像(數據缺失):

enter image description here

謝謝!

回答

0

數據在那裏,它只是被繪製在圖的邊緣。你可以改變全球的y限制

df.plot(ylim=(0,3500)) 
df.plot(subplots=True, figsize=(6, 6), ylim=(0,3500)) 

要改變它們的每個情節,我認爲你需要單獨繪製曲線。

要單獨做到這一點,我通常做這樣的事情(有數不勝數的方式做到這一點):

fig, axes = plt.subplots(3,1) 
axes[0].set_ylim([df.a.min()*0.9, df.a.max()*1.1]) 
axes[0].set_xticklabels([]) 
axes[1].set_ylim([df.b.min()*0.9, df.b.max()*1.1]) 
axes[1].set_xticklabels([]) 
axes[2].set_ylim([df.c.min()*0.9, df.c.max()*1.1]) 
axes[0].plot(df.a) 
axes[1].plot(df.b) 
axes[2].plot(df.c) 

jupyter screenshot

軸標籤可以被調整爲可讀的,等等 - 結賬matplotlib.org大量的例子。

+0

感謝您的回答。那麼我怎麼能爲每個情節單獨做呢?再次感謝。 – Gonzalo