gpt4 book ai didi

r - 不因式分解 x 轴标签的因素

转载 作者:行者123 更新时间:2023-12-04 01:50:52 25 4
gpt4 key购买 nike

我有一个从 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 = "")"))

最佳答案

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

编辑

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

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 参数

关于r - 不因式分解 x 轴标签的因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53166315/

25 4 0