熊猫和matplotlib做线性图

时间:2016-07-13 19:42:02

标签: python pandas matplotlib

我的代码中有什么想法可以避免部分图形/画布和日期超出PNG图像?是否可以将日期写在180度或垂直方向,以免使用如此多的格斗空间?

我的数据集是:

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

谢谢!

1 个答案:

答案 0 :(得分: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以获取大量示例。