来自matplotlib文档的烛台示例中的ImportError:`无法导入名称quotes_historical_yahoo_ohlc`

时间:2015-12-27 17:01:49

标签: python matplotlib

我是Python的新手,我很难在matplotlib文档中运行这个示例:

http://matplotlib.org/examples/pylab_examples/finance_demo.html

我基本上将代码1:1复制到我的Python文件中,当我尝试运行它时,我得到如下错误:

File "plot.py", line 5, in <module>
    from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc
ImportError: cannot import name quotes_historical_yahoo_ohlc

我在Mac和Linux机器上得到相同的结果,所以我假设它与安装有关或者缺少依赖。在Linux上,我已经通过apt-get install安装了Mac,我使用了pip

非常感谢任何帮助或疑难解答信息。

1 个答案:

答案 0 :(得分:3)

是的,我也一样。

所以在光标提示符下我输入了:

import matplotlib

dir(matplotlib.finance)

...我看到了类似的项目,但最后没有“_ohlc”。

['Affine2D', 'Line2D', 'LineCollection', 'PolyCollection', 'Rectangle',
 'TICKLEFT', 'TICKRIGHT', '__builtins__', '__doc__', '__file__',
 '__name__', '__package__', 'cachedir', 'candlestick', 'candlestick2',
 'colorConverter', 'contextlib', 'date2num', 'datetime', 'division',
 'fetch_historical_yahoo', 'get_cachedir', 'index_bar', 'iterable',
 'md5', 'mkdirs', 'np', 'os', 'parse_yahoo_historical', 'plot_day_summary',
 'plot_day_summary2', 'print_function', 'quotes_historical_yahoo',
 'stock_dt', 'sys', 'urlopen', 'verbose', 'volume_overlay',
 'volume_overlay2', 'volume_overlay3', 'warnings']

所以我只是删除了最后五个字母_ohlc到处看看会发生什么,现在它对我有用。我不确定这是否真的100%正确。 2013年@tcaswell有一些activity ......

enter image description here

#!/usr/bin/env python
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, WeekdayLocator,\
    DayLocator, MONDAY
from matplotlib.finance import quotes_historical_yahoo, candlestick    # _ohlc deleted


# (Year, month, day) tuples suffice as args for quotes_historical_yahoo
date1 = (2004, 2, 1)
date2 = (2004, 4, 12)


mondays = WeekdayLocator(MONDAY)        # major ticks on the mondays
alldays = DayLocator()              # minor ticks on the days
weekFormatter = DateFormatter('%b %d')  # e.g., Jan 12
dayFormatter = DateFormatter('%d')      # e.g., 12

quotes = quotes_historical_yahoo('INTC', date1, date2)  # _ohlc deleted
if len(quotes) == 0:
    raise SystemExit

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)
#ax.xaxis.set_minor_formatter(dayFormatter)

#plot_day_summary(ax, quotes, ticksize=3)
candlestick(ax, quotes, width=0.6)  # _ohlc deleted

ax.xaxis_date()
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')

plt.show()