【发布时间】:2018-09-05 16:26:30
【问题描述】:
根据下面的代码,绘制历史价格数据的对数转换可以正常工作,但是当将任何第二个图(例如收盘价)添加到图中时,对数转换被绘制为 ts=0 ?!
代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plot
df = pd.read_csv('historical_price_data.csv')
df = df[::-1]
df['Date'] = pd.to_datetime(df.Date, infer_datetime_format=True)
# Set index to Date returns KeyError: "['Date'] not in index"
# df.set_index('Date', inplace=True)
df.sort_index(inplace=True)
# Log Transform
log_transform = df['Close']
df['log'] = np.log(log_transform)
# Log transform plots fine by itself
ax = df[['Date', 'log']].plot(figsize=(14, 7), x='Date')
# Adding another plot to the figure results in log_transform being set to 0 !
ax = df[['Date', 'Close']].plot(figsize=(14, 7), x='Date', ax=ax)
plot.show()
请注意,使用单个 loc 而不是 2 绘制它们会导致日志转换线被压缩为 0 的相同问题:
ax = df[['Date', 'log', 'Close']].plot(x='Date')
【问题讨论】:
-
您可能想在第二个 y 轴上绘图 -
ax2=ax.twinx() -
@DavidG 如何将 df['log'] 添加到 ax2 以便将它们都绘制在一个图中?
标签: python python-3.x pandas numpy matplotlib