如何在Plotly中将Kraken OHLC数据的毫秒Epoch时间转为日期?
把Kraken的Epoch时间转成Plotly蜡烛图可读X轴日期
这问题我之前也碰到过!Plotly对数字类型的X轴默认直接显示数值,咱们只需要把Epoch时间转成Python的datetime类型,Plotly就会自动识别并显示友好的日期格式了,甚至还能自定义显示样式。
步骤1:转换Epoch时间为datetime
首先假设你用的是pandas DataFrame(Kraken的get_ohlc_data返回的ohlc应该是DataFrame),用pd.to_datetime()就能轻松转换。注意看你的Epoch是秒级还是毫秒级:
- 如果是秒级(比如示例里的
1599651300),用unit='s' - 如果是毫秒级,用
unit='ms'
步骤2:修改代码并自定义日期格式(可选)
转换完时间后,Plotly会自动处理X轴显示,但如果想要更贴合你示例的10-Sep-2020 12:23格式,可以在Layout里设置xaxis.tickformat。
修改后的完整代码如下:
import pandas as pd import plotly.graph_objects as go from plotly.offline import plot # 获取Kraken的OHLC数据 ohlc, last = k.get_ohlc_data("BCHEUR", 5) # 转换Epoch时间为datetime(这里假设是秒级Epoch,根据实际情况调整unit) ohlc['time'] = pd.to_datetime(ohlc['time'], unit='s') # 绘制蜡烛图 candle = go.Candlestick( x=ohlc['time'], open=ohlc['open'], close=ohlc['close'], high=ohlc['high'], low=ohlc['low'], name="Candlesticks" ) data = [candle] # 自定义布局,设置X轴日期格式(可选) layout = go.Layout( xaxis=dict( tickformat='%d-%b-%Y %H:%M', # 对应示例的10-Sep-2020 12:23格式 title='Date' ), yaxis=dict(title='Price (EUR)') ) fig = go.Figure(data=data, layout=layout) plot(fig)
关键说明
pd.to_datetime()是核心:把数字类型的Epoch转成datetime后,Plotly会自动启用日期轴的交互(比如缩放、hover显示详细日期)tickformat的格式符参考Python的strftime规则:%d是日,%b是缩写月份,%Y是4位年份,%H:%M是小时分钟- 如果你的ohlc不是DataFrame,而是普通列表,可以用
datetime.datetime.fromtimestamp()逐个转换后再传入Plotly
内容的提问来源于stack exchange,提问作者FabioDev
相关产品推荐
相关产品推荐

