2014-01-14 54 views
4

我想在Matplotlib上创建烛台图表。我在网上发现了很多例子,但到目前为止,他们都使用与雅虎财务或其他类型数据的连接,而当你有一个包含日期,开放,元数据的元组列表时,不能很好地解释如何得到相同的结果关闭,高和低的价格。通常情况下,事实上,您已经拥有历史价值或估计价值,或者通常情况下您不想使用来自雅虎财经等提供商的数字。我想知道的是用自己的值列表创建蜡烛图表的基本代码。假设我有一个元组列表与我需要两天的所有数据:如何用Matplotlib(Python 2.7)和您自己的数据创建烛台图表

Prices = [('01/01/2010', 1.123 (open), 1.212 (close), 1.463 (high), 1.056(low)), 
      ('02/01/2010', 1.121 (open), 1.216 (close), 1.498 (high), 1.002(low))] 

我应该代码完全得到烛台图(这意味着一个图,其中列表中的“价格”的每一个元素是创建烛台)与这两个数据点?我当然可以操纵数据(例如日期字符串在浮动日期等),但我无法获取简单的命令来创建图表。任何人都可以帮忙

+0

有什么不对的'candlestick' http://matplotlib.org/examples/pylab_examples/finance_demo.html matplotlib自己的例子吗?你只需要适应你的数据(为此我们有btw不知道你想要什么绘图)。 –

+0

只是不理解如何构建我的数据,因为它不是显式的: 'quotes = quotes_historical_yahoo('INTC',date1,date2)'。 但现在我已经发现[这里](http://doc.astro-wise.org/matplotlib.finance.html)它必须是“引号是一系列的(时间,开放,关闭,高,低,...)序列“。所以现在它起作用了,我的只是一个普通的问题,因为我已经看到,在网络中很难找到一个非常基本的例子,很多时候用户更喜欢使用他们自己的数据而不是雅虎财经的数据。不管怎么说,还是要谢谢你。 –

+0

您的问题留下了重要的细节,以备将来参考。也许你可以写下你希望烛台图显示哪些信息,以及“价格”中的不同字段究竟代表什么。 –

回答

5

继matplotlib example我有以下解决方案:

from pylab import * 
import matplotlib.pyplot as plt 
from datetime import datetime 
import time 
from matplotlib.dates import DateFormatter, WeekdayLocator, HourLocator, \ 
    DayLocator, MONDAY 
from matplotlib.finance import candlestick,\ 
    plot_day_summary, candlestick2 


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 

#starting from dates expressed as strings... 
Date1 = '01/01/2010' 
Date2 = '02/01/2010' 
#...you convert them in float numbers.... 
Date1 = date2num(datetime.strptime(Date1, "%d/%m/%Y")) 
Date2 = date2num(datetime.strptime(Date2, "%d/%m/%Y")) 
#so redefining the Prices list of tuples... 
Prices = [(Date1, 1.123, 1.212, 1.463, 1.056), (Date2,1.121, 1.216, 1.498, 1.002)] 
#and then following the official example. 
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(ax, Prices, width=0.6) 

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

plt.show() 
+0

恭喜您解决您自己的问题!请记住在你允许的时候接受你自己的答案(我认为这是一天的延迟)。 – tacaswell

+1

1.财务子模块没有被维护,并且具有说服力。烛台需要更改为_candstick才能工作。 3.当我测试它时,我删除了plot_day_summary和candlestick2的输入;他们没有用在代码中。 4.我不知道另一种在matplotlib中绘制烛台或欧姆条的方法。理想情况下,有人应该为此写一个新的,非常基本的特殊栏。多种颜色会很好(我生成的情节是纯白色的)。 – bitchaser

+1

@bitchaser请把它写成一个新的答案,这个线程是非常老的(2014年1月),它可能是真实的你说什么,所以应该通知新用户 –