繁体   English   中英

给定数据框,iPython是否可以生成此类图表?

[英]Is there a way for iPython to generate these kinds of charts given a dataframe?

这张照片

请忽略背景图片。 前景图是我有兴趣使用pandas或numpy或scipy(或iPython中的任何东西)显示的内容。

我有一个数据框,其中每一行代表一天的温度。 这是一些行的示例:

            100   200   300   400   500   600 ...... 2300
10/3/2013  53*C  57*C  48*C  49*C  54*C  54*C        55*C
10/4/2013  45*C  47*C  48*C  49*C  50*C  52*C        57*C

有没有一种方法可以获取图表,该图表使用第一列作为“零”来表示每小时之间的变化

假设您的数据框名为df ,那么快速而肮脏的事情可能会带您到达那里。

import matplotlib.pyplot as plt
plt.imshow(df.T.diff().fillna(0.0).T.drop(0, axis=1).values)

由于我无法轻松地使用您确切的列标签构建示例版本,因此可能需要进行一些额外的修改,以消除diff中包含的所有索引列并随转置一起移动。 但这在随机数据示例上为我制作了一个简单的热图样图。

然后,您可以创建一个matplotlib图形或轴对象,并为x和y轴标签指定所需的内容。

您可以一次为每一行绘制一条带有偏移的线:

nrows, ncols = 12, 30

# make up some fake data:
d = np.random.rand(nrows, ncols)
d *= np.sin(2*np.pi*np.arange(ncols)*4/ncols)
d *= np.exp(-0.5*(np.arange(nrows)-nrows/2)**2/(nrows/4)**2)[:,None]

#this is all you need, if you already have the data:
for i, r in enumerate(d):
    plt.fill_between(np.arange(ncols), r+(nrows-i)/2., lw=2, facecolor='white')

重叠线

如果您不需要填充颜色来阻塞上一行,则可以一次完成所有操作:

d += np.arange(nrows)[:, None]
plt.plot(d.T)

未填满

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM