plotly 中的多级 x 轴

multi-level x axis in plotly

如果多级 x 轴可用于 plotly,我没有找到任何信息。我想可以在 ggplot2 中完成(例如 this SO thread),然后用 ggplotly() 转换它,但我更喜欢 plotly 解决方案。这可能吗?目前我正在使用一个辅助列,它将年和月连接到格式“2017-12”。

示例数据集:

data.frame(
        year = c(2017, 2018, 2018, 2017, 2018, 2018),
       month = c(12, 1, 2, 12, 1, 2),
       value = c(120, 110, 130, 90, 100, 110)
)

结果应如下所示(x 轴上的年份和月份):

由于您的 x 轴值只是新行分隔值,您可以 paste 两列并用 HTML 换行符 <br /> 分隔它们。标签分配给 x-xaxis 刻度。

library('plotly')

df <- data.frame(
  year = c(2017, 2018, 2018, 2017, 2018, 2018),
  month = c(12, 1, 2, 12, 1, 2),
  value = c(120, 110, 130, 90, 100, 110)
)

xaxis <- list('tickvals'= seq(1, length(df$year)),
              'ticktext' = paste(df$month, df$year, sep='<br />'),
              'tickmode' = 'array')

plot_ly(y=df$value, x=seq(1, length(df$year)), mode='lines', type='scatter') %>% layout(xaxis = xaxis)