【问题标题】:factor not factorizing x axis labels for plotly因子不分解 x 轴标签的情节
【发布时间】:2019-04-09 12:23:34
【问题描述】:

我有一个从 excel 导入的数据框。 其中一列的格式为:

dates
-------
Oct-17
Nov-17
Dec-17
Jan-18
Feb-18
Mar-18
Apr-18
May-18
Jun-18
Jul-18
Aug-18

所有其他列都只是数字

当我使用 plotly(折线图)绘制它时,我的 x 轴按字母顺序排列。我试过因素。但它不起作用。

 data_ = read_excel(path="Sample.xlsx",sheet = 'sheet1')
  data = as.data.frame(data_)
 data$dates <- factor(data$dates, levels = data$dates)

必须做什么?最后我需要用这种格式标记月份的x轴Oct-18,Nov-18

情节代码:

pred <- plot_ly(data_, x = ~dates, y = ~exp, name = 'Exp', type = 'scatter', mode = 'lines',
               line = list(color = 'rgb(205, 12, 24)', width = 4)) %>%
    add_trace(y = ~acc, name = 'Accumulated', line = list(color = 'rgb(22, 96, 167)', width = 4)) %>%
    add_trace(y = ~sts, name = 'Contract', line = list(color = 'rgb(205, 12, 24)', width = 4, dash = 'dash')) %>%
    add_trace(y = ~stat, name = 'Status ', line = list(color = 'rgb(22, 96, 167)', width = 4, dash = 'dash')) %>%
    layout(title = "Trend",
           xaxis = list(title = "Months"),
           yaxis = list (title = "")"))

【问题讨论】:

    标签: r dataframe ggplot2 rstudio plotly


    【解决方案1】:

    如果您在factor() 函数中传递参数ordered = TRUE,则级别的顺序将是您打印data$dates 时它们出现的顺序。这也是它们在剧情中出现的顺序。如果您未设置 ordered = TRUE,则默认行为是按字母顺序排列字符因子。

    编辑

    要以正确的顺序以编程方式获取dates 列,您可以尝试以下代码(取决于dplyr 和stringr 包):

    levels <- data %>%
      distinct(dates) %>% 
      rowwise() %>% 
      mutate(
        year = stringr::str_split(dates, "-", simplify = TRUE)[2],
        month = stringr::str_split(dates, "-", simplify = TRUE)[1], 
        month = match(month, month.abb)
        ) %>% 
      arrange(year, month) %>% 
      pull(dates)
    

    现在你只需将这个levels 向量传递给factor() 内的levels 参数

    【讨论】:

    • data$dates &lt;- factor(data$dates, levels = data$dates, ordered =TRUE) 这没有做任何改变。我仍然按字母顺序排序
    • 如果没有可重现的示例,很难弄清楚发生了什么,但问题可能是您将整个dates 列传递给levels。如果您按所需顺序传递具有级别的向量,它应该可以工作(例如:levels = c("Oct-17", "Nov-17", ...**other dates in order**, "Aug-18"))。
    • 但这是动态的。每个月都会添加新的月份
    • [1] "Dec-17" "Jan-18" "Feb-18" "Mar-18" "Apr-18" "May-18" "Jun-18" "Jul-18" [9] "Aug-18" NA NA NA NA NA NA NA [17] NA NA NA NA NA NA NA NA [25] NA NA NA NA NA NA NA NA [33] NA NA NA NA NA NA NA NA
    • 对不起,这是因为我写错了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    相关资源
    最近更新 更多