如何在 Python 中使用 DataFrame 绘制烛台图表?
How can I graph a candlestick chart with a DataFrame in Python?
我不知道如何用 python 绘制烛台 OHLC 图表。自从 matplotlib.finance 被弃用后,我就遇到了这个问题...感谢您的帮助!
DataFrame "quotes" 是一个 excel(无法粘贴到此处),但具有以下列:
Index(['Date', 'Open', 'High', 'Low', 'Close'], dtype='object')
我也有一个默认索引。 'Date' 列是 pandas._libs.tslibs.timestamps.Timestamp
当我 运行 代码时,出现以下错误:
文件“”,第 30 行,在
candlestick_ohlc(ax, zip(mdates.date2num(quotes.index.to_pydatetime()),
AttributeError: 'RangeIndex' 对象没有属性 'to_pydatetime'
这是我的代码:
import datetime
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.dates import MONDAY, DateFormatter, DayLocator,
WeekdayLocator
from mpl_finance import candlestick_ohlc
date1 = "2004-2-1"
date2 = "2004-4-12"
mondays = WeekdayLocator(MONDAY)
alldays = DayLocator()
weekFormatter = DateFormatter('%b %d')
dayFormatter = DateFormatter('%d')
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(weekFormatter)
candlestick_ohlc(ax, zip(mdates.date2num(quotes.index.to_pydatetime()),
quotes['Open'], quotes['High'],
quotes['Low'], quotes['Close']),
width=0.6)
ax.xaxis_date()
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(), rotation=45,
horizontalalignment='right')
plt.show()
如果您在构建 DataFrame 时未指定索引,它将默认为 RangeIndex
,它只是连续为您的行编号。此 RangeIndex 显然不能转换为日期——因此出现错误。 read_excel
函数以index_col
为参数,指定使用哪一列作为索引。您可能还必须提供 parse_dates=True
.
我不知道如何用 python 绘制烛台 OHLC 图表。自从 matplotlib.finance 被弃用后,我就遇到了这个问题...感谢您的帮助!
DataFrame "quotes" 是一个 excel(无法粘贴到此处),但具有以下列:
Index(['Date', 'Open', 'High', 'Low', 'Close'], dtype='object')
我也有一个默认索引。 'Date' 列是 pandas._libs.tslibs.timestamps.Timestamp
当我 运行 代码时,出现以下错误:
文件“”,第 30 行,在 candlestick_ohlc(ax, zip(mdates.date2num(quotes.index.to_pydatetime()), AttributeError: 'RangeIndex' 对象没有属性 'to_pydatetime'
这是我的代码:
import datetime
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.dates import MONDAY, DateFormatter, DayLocator,
WeekdayLocator
from mpl_finance import candlestick_ohlc
date1 = "2004-2-1"
date2 = "2004-4-12"
mondays = WeekdayLocator(MONDAY)
alldays = DayLocator()
weekFormatter = DateFormatter('%b %d')
dayFormatter = DateFormatter('%d')
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(weekFormatter)
candlestick_ohlc(ax, zip(mdates.date2num(quotes.index.to_pydatetime()),
quotes['Open'], quotes['High'],
quotes['Low'], quotes['Close']),
width=0.6)
ax.xaxis_date()
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(), rotation=45,
horizontalalignment='right')
plt.show()
如果您在构建 DataFrame 时未指定索引,它将默认为 RangeIndex
,它只是连续为您的行编号。此 RangeIndex 显然不能转换为日期——因此出现错误。 read_excel
函数以index_col
为参数,指定使用哪一列作为索引。您可能还必须提供 parse_dates=True
.