我试图在同一个图表上绘制两个数据帧。我想这样做五次以产生五个不同的数字,以便它们可以保存为单独的文件,以便以后使用。但是,我无法在同一图表上获得这两组数据。我知道当我在网格中有多个子图时,如何在同一个图上绘制两组数据,以及如何在不使用同一图上的数据帧时绘制两组数据。然而,这种看起来让我感到困惑。
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
...
对于最初不包括它而道歉。我认为这是一个图形问题,但似乎很大程度上变成了数据帧之间的兼容性问题。
答案 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小时结束,但是否则符合预期: