Ответ 1
Следующий код устраняет проблему перекрытия данных
fig.autofmt_xdate()
У меня есть выходной файл данных pandas следующим образом
Open High Low Close
2016-06-01 69.60 70.20 69.44 69.76
2016-06-02 70.00 70.15 69.45 69.54
2016-06-03 69.51 70.48 68.62 68.91
2016-06-04 69.51 70.48 68.62 68.91
2016-06-05 69.51 70.48 68.62 68.91
2016-06-06 70.49 71.44 69.84 70.11
Я использовал следующий код, чтобы сделать подсвечник:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
from matplotlib.finance import candlestick_ohlc
import matplotlib.dates as mdates
import datetime as dt
#Reset the index to remove Date column from index
df_ohlc = df.reset_index()
#Naming columns
df_ohlc.columns = ["Date","Open","High",'Low',"Close"]
#Converting dates column to float values
df_ohlc['Date'] = df_ohlc['Date'].map(mdates.date2num)
#Making plot
fig = plt.figure()
ax1 = plt.subplot2grid((6,1), (0,0), rowspan=6, colspan=1)
#Converts raw mdate numbers to dates
ax1.xaxis_date()
plt.xlabel("Date")
print(df_ohlc)
#Making candlestick plot
candlestick_ohlc(ax1,df_ohlc.values,width=1, colorup='g', colordown='k',alpha=0.75)
plt.ylabel("Price")
plt.legend()
plt.show()
Я получаю подсвечник, но даты перекрываются, я хочу знать, как исправить эту проблему? Более того, я хочу знать, почему легенда не появляется.
Следующий код устраняет проблему перекрытия данных
fig.autofmt_xdate()
Вы можете повернуть даты, добавив:
for label in ax1.xaxis.get_ticklabels():
label.set_rotation(45)
над вашим plt.show()
Pandas также сделает это для вас, если вы добавите скользящее среднее с чем-то вроде:
df_ohlc['10MA'] = pd.rolling_mean(ohlc['close'], 10)
df_ohlc['10MA'].plot(ax=ax1, label = '10MA')
Как я понимаю, вы не видите легенду, потому что подсвечник понимается и не нуждается в маркировке. Однако, если бы вы добавили скользящую среднюю, в легенде будет отображаться "label = 10MA".
Я надеюсь, что это так же полезно, как и поздно. Я наткнулся на этот пост, ища другую помощь.