web-dev-qa-db-ja.com

Pandas DataFrameからのローソク足プロットの日付の重複

私はpandas dataframe出力を次のように持っています

        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()

ローソク足プロットが表示されますが、日付が重複しています。この問題の修正方法を知りたいですか?さらに、伝説が表示されない理由を知りたいです。

Candlestick plot figure

10
user7616021

次のコードは、データの重複の問題を解決します

fig.autofmt_xdate()
2
user7616021

以下を追加することにより、日付をローテーションできます。

for label in ax1.xaxis.get_ticklabels():
    label.set_rotation(45)

あなたのplt.show()の上

次のような移動平均を追加する場合、パンダもこれを行います。

df_ohlc['10MA'] = pd.rolling_mean(ohlc['close'], 10)
df_ohlc['10MA'].plot(ax=ax1, label = '10MA')

私が理解しているように、ローソク足チャートは理解されており、ラベルを付ける必要がないため、凡例は表示されません。ただし、移動平均を追加すると、「label = 10MA」が凡例に表示されます。

これが遅いのと同じくらい役に立つことを願っています。他のヘルプを検索しているときにこの投稿に遭遇しました。

3
d_sa