如何使用matplotlib从我自己的数据中制作烛台图表

时间:2013-10-11 20:22:08

标签: python matplotlib candlestick-chart

我在网上找到的所有examples都与从互联网上提取数据有关。我有自己的数据,我只想要烛台的最大和最小方面(不需要烛台上的开始和结束级别)。

我有一个十进制值列表:

values=[[5,6],[6,7],[7,8.8],...]

我有

from matplotlib.pyplot import subplots, draw
from matplotlib.finance import candlestick, candlestick2

fig, ax = subplots()
candlestick(ax, values, width=0.5)
plt.show()

我是根据在线示例写的。我不确定斧头是什么意思以及它是如何使用的。另外,我不确定如何正确输入值列表。现在我收到以下错误:

Traceback (most recent call last):
  File "algor.py", line 41, in <module>
    candlestick(ax, values, width=0.5)
  File "/usr/lib/pymodules/python2.7/matplotlib/finance.py", line 330, in candlestick
    t, open, close, high, low = q[:5]
ValueError: need more than 2 values to unpack

是抱怨因为我只有2而不是4输入?我只想要一个没有尾巴的矩形。我应该将值更改为

values=[[5,5,6,6],[7,7,8.8,8.8],...]

编辑:这给了我同样的错误

2 个答案:

答案 0 :(得分:4)

根据文档herequotes的{​​{1}}参数必须是(time,open,close,high,low,...)的序列。如果您只想要没有尾巴的矩形,也许您可​​以使用box plot代替。

答案 1 :(得分:1)

免责声明:我真的不知道烛台正在尝试做什么

但是我可以告诉你以下内容,查看我们得到的这个函数的文档:

Definition: candlestick(ax, quotes, width=0.2, colorup=u'k', colordown=u'r', alpha=1.0)
Docstring:
Plot the time, open, close, high, low as a vertical line ranging
from low to high.  Use a rectangular bar to represent the
open-close span.  If close >= open, use colorup to color the bar,
otherwise use colordown

现在与您一起讨论,ax是一组轴的轴实例。您在致电fig, ax = plt.subplots()时创建了它。 ax的方法可以called ax.plot()ax.set_xlims()。欢迎使用面向对象的编程。

那么为什么你会收到这个错误?好吧,看看文档,我们看看烛台expects for引用了什么:

quotes : sequence of (time, open, close, high, low, ...) sequences
    As long as the first 5 elements are these values,
    the record can be as long as you want (eg it may store volume).

所以我担心你必须给出你提到的你不想给予它的开始和结束价值。也许你可以做些什么?所以基本上要让它运行,尝试像

这样的东西
values = [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6]]
candlestick(ax, values)

值中的每个项目都将按照文档中的说明进行绘制。

要了解如何自己查找这些内容,特别是因为财务包无法在线查找文档,我建议您下载并安装ipython。这是一个python解释器,您可以在其中查询更多内容,例如类型

candlestick?

它会打印文档,输入

ax. # and then press tab after the full stop

它会打印你可以用轴做的所有事情!