无法将第二个图添加到对数变换图

时间:2018-09-05 07:51:27

标签: python python-3.x pandas numpy matplotlib

在下面的代码中,绘制历史价格数据的对数变换可以很好地工作,但是当在图中添加任何第二个图(例如收盘价)时,对数变换都将绘制为ts = 0?!

代码:

ax = df[['Date', 'log', 'Close']].plot(x='Date')

Log Transformation plots by itself

Adding 2nd plot breaks Log Transformation plot

仅需注意,用单个位置而不是2绘制它们会导致相同的问题,即对数变换行被压缩为0:

for(int i = 0; i < myArray.length; i++){
    System.out.println(myArray[i]);
}

3 个答案:

答案 0 :(得分:1)

您对数转换后的数据比原始数据小几个数量级(按定义几乎是这样),因此它在图上看起来是折叠的:Close的峰值大约为20000,而{{1} }大约在log处达到峰值。

将原始数据与同一图上的对数变换进行比较几乎没有任何意义。

如果您解决了索引问题,请使用以下内容在单独的图上进行绘制:

10

答案 1 :(得分:1)

如果要在同一子图上绘制数据,而不是在2个单独的子图上绘制数据,则可以使用ax.twinx()创建辅助y轴。然后,您可以使用ax=将此新轴作为参数传递给绘图函数:

ax = df[['Date', 'log']].plot(figsize=(14, 7), x='Date')

ax2 = ax.twinx() # create seconday y axis and pass it into the plotting function below
ax2 = df[['Date', 'Close']].plot(figsize=(14, 7), x='Date', ax=ax2)

答案 2 :(得分:0)

还有另一种语法:

df['rolling_mean'] = df.Close.rolling(window=7).mean()
df.plot(x='Date', y=['Close', 'rolling_mean'], logy=True, figsize=(15,5))

具有模拟数据集:

enter image description here