我有一个使用案例,其中我以ask and bid
的形式在图形上提取和绘制Forex
数据,这是基于minute, hour or day candlesticks
的,我只将bid and ask
的closing
值绘制为spline
。
问题
我正在使用其Forex
数据馈送的端点从Friday 8pm
到Sunday 9pm
不可用。
- 在图表上一次绘制200个数据点(即每小时蜡烛线),在新蜡烛线上逐步淘汰最旧的,并绘制最新的
- X轴是
UTC ISO Format
中数据点的datetime
- Y轴是卖出价和买入价的值
- 一次曲线图显示
4.1 days worth of hourly candle
当x-axis
上的datetime
没有任何间隔时,图形为pretty
和smooth
。
2018-06-29T16:00:00.000000000Z
2018-06-29T17:00:00.000000000Z
2018-06-29T19:00:00.000000000Z
2018-06-29T20:00:00.000000000Z (Friday last candle 8pm)
2018-07-01T21:00:00.000000000Z (Sunday first candle 9pm)
2018-07-01T22:00:00.000000000Z
2018-07-01T23:00:00.000000000Z
2018-07-02T00:00:00.000000000Z
一旦出现间隙(大约47-49 hours
),所有内容都会被压缩,以适应图形的拉伸部分,如下所示(使用plotly.js)
大多数情况下,财务图表不会显示差距。例如,查看TradingView交互式图表,您将看到weekend
的以下内容
如果你知道如何用开源图表库(不包括TradingView
)解决这个问题,那么请分享你的解决方案。
6条答案
按热度按时间tf7tbtn21#
TL;DR
根据我的发现,你可以使用
Highcharts
库的HighStock
来排除这些差距。Highcharts是开源的,并且只对Non-commercial
免费使用,更多详细信息请参见highcharts licensing情节. js
我最初是从plotly.js开始的,因为老实说,它确实是一个非常好的图表库。
论坛(论坛)
https://github.com/plotly/plotly.js/issues/1382(锁定的github线程)
https://community.plot.ly/t/x-axis-without-weekends/1091/2
根据上面的
Github
问题链接,目前无法在x-axis
上处理datetime
。有一些变通办法(如上面的第三个链接),但我尝试了一些,要么不起作用,要么我丢失了一些信息。我得出的结论是,尽管
plotly
是一个很棒的库,但它在这种情况下根本无法帮助我。如果你认为它能帮助我,请分享你的解决方案:)C3.js中的一个
在对图表库做了更多的研究之后,我给予了一下C3.js,在用
datetime
编辑了他们的x轴实时演示示例之后,我观察到了同样的周末间隙问题(见下文)我没有费心去研究为什么,这可能是因为基于
D3.js
就像plotly.js
一样。如果你认为日期时间间隔可以用C3.js
来处理,那么请随时分享你的解决方案。高排行榜
我终于遇到了
Highxxxxx
图表库的家族,乍一看,它看起来很漂亮,提供了我想要的所有功能。我尝试了Highchart
,我得到了同样的周末间隙问题我开始想,唯一的解决方案就是在
x-axis
中显示datetime
,然后以某种方式在tooltip
中显示日期时间,这样似乎就完成了任务,如下所示但是,由于太固执而不能给予,我继续了我的研究。我真的很想完成图表,如X11 M19 N1 X和其他股票可视化。
我决定做一些更多的研究,我不知道我是如此如此接近一个解决方案,由非常相同的图表库
Highcharts
,它被称为HighStock
高牌股票
默认情况下,HighStock会处理间隙,如下所示
我使用了下面的Javascript
这是一个无缝的(不确定它是否是一真实的单词)财务图表,x轴为
datetime
,表示财务数据。我没有尝试的库
我已经研究过,但没有尝试过以下图表库
Plotly
和Highcharts
的水平。最后的想法
我发现
Highcharts
是1.记录完善
1.大量的jsfiddles示例
1.很多有用的SO答案
1.美观实用
1.多种选择
1.易于使用
与
gaps
相关的类似SO问题How can I hide data gaps in plotly?
HighCharts datetime xAxis without missing values (weekends)( highcharts )
Remove weekend gaps in gnuplot for candlestick chart(阴阳烛图,枪形图)
How to remove gaps in C3 timeseries chart?(c3/d3 -小提琴不工作,所以很难看到解决方案)
How to remove weekends dates from x axis in dc js chart(c3.js -差距是某个间隙)
6qftjkof2#
Plotly现在支持隐藏周末和假期图表与rangebreaks的帮助.检查此链接:https://plotly.com/python/time-series/转到“隐藏周末和节假日”部分
以下是从该链接复制的部分,示例适用于plotly.express,但也适用于plotly.graph_objects
隐藏周末和假日日期类型的x轴和y轴上可用的分段范围属性可用于隐藏某些时段。在下面的示例中,我们显示了两个图:一个在默认模式下显示数据中的间隙,另一个隐藏了周末和节假日以显示不间断的交易历史。注意12月21日和1月4日网格线之间的间隙较小,其中节假日被删除。查看参考以了解更多选项:https://plotly.com/python/reference/#layout-xaxis-rangebreaks
无间隙显示
gcuhipw93#
根据文件
尝试在
fig.show()
之前添加或
kyvafyod4#
使用category作为xaxis类型对我来说非常有效(注意go.layout对象):
44u64gxh5#
首先,不需要放弃Plotly。使用范围分隔符确实是要使用的工具,但这只是它的一个方面。我这样说是因为对于股票数据来说,与值相比,范围是不实际的,但您将为每年的许多假期指定日期。并且它们中的大多数在不同的年份之间会发生变化。因此,使用值作为范围分隔符,并将您不需要的每个日期的列表输入其中。如果你需要一个更大的推动来解决这个问题,我的意思是把'日期'列放在一边,循环通过它,并追加在另一个列表中没有的日期。然后你可以去***fig.update_xaxes(rangebreaks=[dict(values=mylistofdates)])***希望这能把你带回Plotly!
zphenhs46#
要使用plotly从Financial Data中删除空列(如Weekends),请使用以下代码。
代码-
啪-