【问题标题】:Overlapping Dates in Candlestick Plot from a Pandas DataFramePandas DataFrame 中烛台图中的重叠日期
【发布时间】:2017-07-15 05:01:28
【问题描述】:

我有一个熊猫数据框输出如下

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

我得到一个烛台图,但日期重叠,我想知道如何解决这个问题?此外,我想知道为什么传说没有出现。

【问题讨论】:

  • @MartinEvans 完成。

标签: python pandas matplotlib finance candlestick-chart


【解决方案1】:

以下代码解决数据重叠问题

fig.autofmt_xdate()

【讨论】:

    【解决方案2】:

    您可以通过添加来旋转日期:

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

    据我了解,您看不到图例,因为烛台图已被理解且无需标记。但是,如果您要添加移动平均线,它的“标签 = 10MA”将显示在图例中。

    我希望这对它有所帮助,因为它已经很晚了。我在寻找其他帮助时偶然发现了这篇文章。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      相关资源
      最近更新 更多