【问题标题】:Candlestick charts with two scales具有两个刻度的烛台图
【发布时间】:2014-04-01 17:03:59
【问题描述】:

我想绘制两个烛台图,代表两个不同的时间序列,需要以不同的比例绘制。在documentation 之后,我认为我应该这样做:

from pylab import * 
from matplotlib.finance import candlestick

price1 = [(734542.0, 1.326, 1.3287, 1.3322, 1.3215), (734543.0, 1.3286, 1.3198, 1.3292, 1.3155), (734546.0, 1.321, 1.3187, 1.3284, 1.3186), (734547.0, 1.3186, 1.3133, 1.3217, 1.308)]
price2 = [(734542.0, 1.5819, 1.5819, 1.5886, 1.5792), (734543.0, 1.5817, 1.5756, 1.5851, 1.5729), (734546.0, 1.578, 1.5766, 1.583, 1.5753), (734547.0, 1.5765, 1.5692, 1.5772, 1.5645)]

fig, ax = subplots()
candlestick(ax,price1,width=0.5)
ax.xaxis_date()
ax.autoscale_view()

ax2 = ax.twinx()
candlestick(ax2,price2,width=0.5)
ax2.xaxis_date()
ax2.autoscale_view()

plt.show()

我想要得到的是 this;但是,运行这段代码就足以看到两个价格系列有点“联合”在一起,没有产生预期的效果。谁能帮我解决这个问题并告诉我我做错了什么?

编辑:基本上我看不出这两个价格系列之间的区别。如果您运行此代码,则仅绘制第一个价格系列:

from pylab import * 
from matplotlib.finance import candlestick

price1 = [(734542.0, 1.326, 1.3287, 1.3322, 1.3215), (734543.0, 1.3286, 1.3198, 1.3292, 1.3155), (734546.0, 1.321, 1.3187, 1.3284, 1.3186), (734547.0, 1.3186, 1.3133, 1.3217, 1.308)]
price2 = [(734542.0, 1.5819, 1.5819, 1.5886, 1.5792), (734543.0, 1.5817, 1.5756, 1.5851, 1.5729), (734546.0, 1.578, 1.5766, 1.583, 1.5753), (734547.0, 1.5765, 1.5692, 1.5772, 1.5645)]

fig, ax = subplots()
candlestick(ax,price1,width=0.5)
ax.xaxis_date()
ax.autoscale_view()
"""
ax2 = ax.twinx()
candlestick(ax2,price2,width=0.5)
ax2.xaxis_date()
ax2.autoscale_view()
"""
plt.show()

您可以看到第一个和第二个之间的区别几乎没有,除了值的一些小变化让我觉得有一种重叠。我怎样才能使两个价格系列不同且清晰可见,它们是两个不同的东西?

【问题讨论】:

  • 你好@MatteoNNZ。 “联合”在一起是什么意思?你的意思是你的两个烛台图重叠太多了吗?
  • 嗨@Ffisegydd 不是真的。我不知道 Stack Overflow 有什么样的错误,但我无法发布图片(它认为我是机器人,我只能写问题:/)所以我不能准确地告诉你......我'我将编辑问题以说明我的意思。

标签: python matplotlib candlestick-chart


【解决方案1】:

我看到了上面的答案,但这只有在您知道数据是什么并且可以使用它以使其不重叠时才有效。您真正需要的是使用条形的格式。我在下面有一个愚蠢的例子来说明如何做。下面我更改一个的颜色,添加透明度,让它们具有不同的宽度等。

from Core.Models.Program import Program
from pylab import * 
from matplotlib.finance import candlestick

price1 = [(734542.0, 1.326, 1.3287, 1.3322, 1.3215), (734543.0, 1.3286, 1.3198, 1.3292,    1.3155), (734546.0, 1.321, 1.3187, 1.3284, 1.3186), (734547.0, 1.3186, 1.3133, 1.3217, 1.308)]
price2 = [(734542.0, 1.5819, 1.5819, 1.5886, 1.5792), (734543.0, 1.5817, 1.5756, 1.5851, 1.5729), (734546.0, 1.578, 1.5766, 1.583, 1.5753), (734547.0, 1.5765, 1.5692, 1.5772, 1.5645)]

fig, ax = subplots()
candlestick(ax,price1,width=1,colorup="blue",colordown="orange")
ax.xaxis_date()

ax2 = ax.twinx()

candlestick(ax2,price2,width=.5,colordown="green",alpha=.5)
ax2.xaxis_date()


plt.show()

alpha 设置透明度(0.5 是一半可见) colorup,colourdown 设置颜色(如果开始结束高于结束则上色) width 调整宽度

我没时间做,只是玩弄它直到它看起来不错。

注意:Matplotlib 按照您绘制图表的顺序“绘制”图表,因此您最后绘制的图表将出现在顶部。

【讨论】:

  • +1,比修改比例更好的解决方案,我会删除我的答案。
  • +2 并标记答案 我想说,通过绘制更长的系列,我已经意识到该方法有效,我所需要的只是格式化条形以区分它们。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-21
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多