Невозможно добавить 2-й график к фигуре Log Transform - PullRequest
0 голосов
/ 05 сентября 2018

Согласно приведенному ниже коду, построение лог-преобразования исторических данных о ценах работает нормально, однако, когда любой 2-й график (например, цена закрытия) добавляется к фигуре, лог-преобразование отображается как 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()

Log Transformation plots by itself

Adding 2nd plot breaks Log Transformation plot

Просто чтобы заметить, что построение их с одним loc вместо 2 приводит к той же самой проблеме с линией преобразования журнала, сжимаемой до 0:

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

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Если вы хотите отобразить данные на одном и том же участке, а не на двух отдельных, вы можете создать вторичную ось y, используя ax.twinx(). Затем вы можете передать эти новые оси в качестве аргумента функции построения графика, используя 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)
0 голосов
/ 05 сентября 2018

Еще один синтаксис:

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

0 голосов
/ 05 сентября 2018

Ваши преобразованные в журнал данные на порядки меньше (по определению почти), чем исходные данные, поэтому они визуально свернуты на графике: Close достигает пика примерно при 20000, тогда как log достигает пика при 10.

Редко имеет смысл сравнивать исходные данные с лог-преобразованием на одном графике.

Если вы когда-нибудь исправили проблему с индексом, используйте следующую команду для построения графиков на отдельных графиках:

df['log'] = np.log(df['Close'])
df[['Close', 'log']].plot(figsize=(14, 7), subplots=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...