R Plotly多线打印x轴标签

R Plotly多线打印x轴标签,r,plotly,r-plotly,R,Plotly,R Plotly,我有一个非常具体的问题,与R中的多线绘图有关。我发现了许多与条形图有关的问题,但与我目前的情况没有任何关系。 我有以下简化的数据框架和代码: df <- data.frame(SEC_LABEL = c("3M","5Y",'10Y'), SEC1_VALUES = c(1.1, 1.4, 1.6), SEC2_VALUES = c(2.3, 2.6, 3.1), SORT=c(1,2,3)) color_line1 <- "#66C2A5" #('rgb(102, 194, 16

我有一个非常具体的问题,与R中的多线绘图有关。我发现了许多与条形图有关的问题,但与我目前的情况没有任何关系。 我有以下简化的数据框架和代码:

df <- data.frame(SEC_LABEL = c("3M","5Y",'10Y'), SEC1_VALUES = c(1.1, 1.4, 1.6), SEC2_VALUES = c(2.3, 2.6, 3.1), SORT=c(1,2,3))
color_line1 <- "#66C2A5"  #('rgb(102, 194, 165)')
  color_line2 <- "#8DA0CB" #('rgb(110, 194, 165)')

unique_line_names_1 <- "line1"
unique_line_names_2 <- "line2"

x_label < - as.character(df$SEC_LABEL)

p <- plot_ly(data = df, x = ~SORT) %>%
      # Time series chart
      add_lines(y = ~SEC1_VALUES, line = list(color = color_line1, width = 3),
                hoverinfo = unique_line_names_1, text = unique_line_names_1, name = unique_line_names_1)  %>%

      add_lines(y = ~SEC2_VALUES, line = list(color = color_line2, width = 3),
                hoverinfo = unique_line_names_2, text = unique_line_names_2, name = unique_line_names_2) %>%

      layout(title=paste0("Curves"),
             showlegend = TRUE,
             margin = list(l=30, r = 20, b = 30, t = 30, pad =1),
             legend = list(x = 0, y = 0.1, 
                           font = list(size = 8),
                           #orientation = 'h',
                           bgcolor ='transparent' ),
             xaxis=list(title='',
                        showline = FALSE,
                        zeroline = FALSE,
                        showticklabels = T,
                        showgrid = FALSE,
                        ticktext = x_label, 
                        gridwidth =0
                        #gridcolor = toRGB("gray50")
                        ),
             yaxis=list(title='',
                        showline = F,
                        zeroline = FALSE,
                        showgrid = T,
                        gridwidth =2)
             )

dfA我在评论中已经提到,简单的解决方案是使用有序因子,即

df$SEC_LABEL <- factor(df$SEC_LABEL, levels = x_label)

df$SEC_LABEL只需将
SEC_LABEL
转换为有序因子,即
df$SEC_LABEL@stefan非常感谢!!!!!这绝对是我的荣幸。但现在我想知道为什么你的方法不起作用。嗯,想一想。(;@stefan你的意思是它可能是一个bug吗?嗨@Angelo。看了一下说明书。所以。不,它不是bug。有时候plotly没有ggplot2那么简单或直观。因为答案有点长,我把它作为一个答案发布了。最好的s.令人惊讶的解释stefan。谢谢你