Plotly教程:如何移除X轴时间刻度标签的前导0
移除Plotly时间轴刻度的前导0
嘿,这个问题我之前也碰到过!Plotly默认的时间刻度格式化确实会给12小时制的早间时间加上前导0,不过咱们可以通过精准的自定义设置轻松解决,看我给你整理的方案:
最稳妥的解决方法:手动指定刻度标签
直接把时间格式化成你想要的样子,再告诉Plotly用这些文本作为刻度,完全可控:
修改后的完整代码如下:
library(plotly) # Data start <- as.POSIXct("2018-01-01 00:00:00", tz = "America/Chicago") end <- as.POSIXct("2018-01-02 00:00:00", tz = "America/Chicago") times <- seq.POSIXt(start, end, by = "60 mins") df <- data.frame(x = times, y = seq_along(times)) # 生成不带前导0的刻度文本:先转格式再去掉多余空格 tick_labels <- trimws(strftime(times, "%l:%M %p")) # 绘制图表并设置自定义刻度 plot_ly(df, x = ~x, y = ~y, type = "scatter", mode = "lines+markers") %>% layout( xaxis = list( tickmode = "array", # 开启自定义刻度模式 tickvals = ~x, # 对应原始的时间数据值 ticktext = tick_labels, # 我们自定义的不带前导0的标签 title = "一天中的时间" ) )
关键细节解释:
strftime(times, "%l:%M %p"):把POSIX时间转成类似" 5:00 AM"的格式(注意小时前有个空格)trimws():去掉这个多余的前导空格,最终得到干净的"5:00 AM"格式- 用
tickmode = "array"让Plotly完全遵循我们指定的刻度值和显示文本,不会再自动加前导0
这样你的X轴就会完美显示不带前导0的时间标签啦,比如5:00 AM、6:00 AM,完全符合需求!
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

