使用多个数字在同一图表上绘制多组数据框

时间:2016-06-20 16:14:59

标签: python-2.7 pandas matplotlib graph

我试图在同一个图表上绘制两个数据帧。我想这样做五次以产生五个不同的数字,以便它们可以保存为单独的文件,以便以后使用。但是,我无法在同一图表上获得这两组数据。我知道当我在网格中有多个子图时,如何在同一个图上绘制两组数据,以及如何在不使用同一图上的数据帧时绘制两组数据。然而,这种看起来让我感到困惑。

tableau20=xcolorpallet()
f0,axes00=plt.subplots()
axes01=axes00.twinx()
df00=df00.drop('elev', 1)
ax00min=float(df00.min())
ax00max=1.05*float(df00.max())
ax00step=int((ax00max-ax00min)/10)
ax10min=float(df10.min())
ax10max=1.05*float(df10.max())
ax10step=int((ax10max-ax10min)/10)
df00.plot(linewidth=2, figsize=(9,6),color=tableau20[6])
axes00.set_ylabel(v00,fontsize=14, rotation=90)
axes00.set_ylim(ax00min,ax00max)
axes00.set_yticks(np.arange(ax00min,ax00max,ax00step))
df10.plot(fig=f0,ax=axes01,secondary_y=v10,linewidth=2,color=tableau20[14])
f0.set_title(v10,fontsize=18)
axes01.set_ylabel(v00,fontsize=14, rotation=90)
axes01.set_ylim(ax00min,ax00max)
axes01.set_yticks(np.arange(ax00min,ax00max,ax00step))
plt.show()

目前,它正在生成两个单独的图表,上面有我的数据,这很不错,但不是我想要的。有什么建议吗?

以下是一些示例数据,以了解我想要绘制的内容:

df00:

time                Temp
2014-08-16 12:02:40 68.0
2014-08-16 12:17:40 69.0
2014-08-16 12:32:40 68.0
2014-08-16 12:47:40 68.0
2014-08-16 13:02:40 68.0
2014-08-16 13:17:40 68.0
2014-08-16 13:32:40 68.0
2014-08-16 13:47:40 68.0
2014-08-16 14:02:40 68.0
2014-08-16 14:17:40 68.0
2014-08-16 14:32:39 66.0
2014-08-16 14:32:40 67.0
2014-08-16 14:47:39 66.0
2014-08-16 14:47:40 66.0
2014-08-16 15:02:40 66.0
2014-08-16 15:17:39 64.0
2014-08-16 15:17:40 65.0
...

DF10:

date_time       Temperature
2014-08-16 12:00:00 17.3997
2014-08-16 13:00:00 16.9094
2014-08-16 14:00:00 16.4693
2014-08-16 15:00:00 15.9627
2014-08-16 16:00:00 15.5795
2014-08-16 17:00:00 15.5492
2014-08-16 18:00:00 15.2729
2014-08-16 19:00:00 15.2119
2014-08-16 20:00:00 15.3572
2014-08-16 21:00:00 15.497
2014-08-16 22:00:00 15.349
2014-08-16 23:00:00 15.3398
2014-08-17 00:00:00 15.5546
2014-08-17 01:00:00 14.9101
2014-08-17 02:00:00 15.279
2014-08-17 03:00:00 15.2961
2014-08-17 04:00:00 15.003
2014-08-17 05:00:00 15.4753
...

对于最初不包括它而道歉。我认为这是一个图形问题,但似乎很大程度上变成了数据帧之间的兼容性问题。

1 个答案:

答案 0 :(得分:1)

要在同一图表上绘图,您将使用与ax相同的.plot()对象:

使用示例数据 - 首先df1

DatetimeIndex: 17 entries, 2014-08-16 12:02:40 to 2014-08-16 15:17:40
Data columns (total 1 columns):
Temp    17 non-null int64
dtypes: int64(1)
memory usage: 272.0 bytes
None
                     Temp
time                     
2014-08-16 12:02:40    68
2014-08-16 12:17:40    69
2014-08-16 12:32:40    68
2014-08-16 12:47:40    68
2014-08-16 13:02:40    68
2014-08-16 13:17:40    68
2014-08-16 13:32:40    68
2014-08-16 13:47:40    68
2014-08-16 14:02:40    68
2014-08-16 14:17:40    68
2014-08-16 14:32:39    66
2014-08-16 14:32:40    67
2014-08-16 14:47:39    66
2014-08-16 14:47:40    66
2014-08-16 15:02:40    66
2014-08-16 15:17:39    64
2014-08-16 15:17:40    65

df2

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 18 entries, 2014-08-16 12:00:00 to 2014-08-17 05:00:00
Data columns (total 1 columns):
Temperature    18 non-null float64
dtypes: float64(1)
memory usage: 288.0 bytes
None
                     Temperature
date_time                       
2014-08-16 12:00:00      17.3997
2014-08-16 13:00:00      16.9094
2014-08-16 14:00:00      16.4693
2014-08-16 15:00:00      15.9627
2014-08-16 16:00:00      15.5795
2014-08-16 17:00:00      15.5492
2014-08-16 18:00:00      15.2729
2014-08-16 19:00:00      15.2119
2014-08-16 20:00:00      15.3572
2014-08-16 21:00:00      15.4970
2014-08-16 22:00:00      15.3490
2014-08-16 23:00:00      15.3398
2014-08-17 00:00:00      15.5546
2014-08-17 01:00:00      14.9101
2014-08-17 02:00:00      15.2790
2014-08-17 03:00:00      15.2961
2014-08-17 04:00:00      15.0030
2014-08-17 05:00:00      15.4753

这样:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')

ax = df1.plot()
df2.plot(ax=ax)
plt.show()

导致DataFrame的较短行,其中数据提前12小时结束,但是否则符合预期:

enter image description here