r - 更改子图的顺序
问题描述
有没有办法在 R 中更改子图的顺序?有没有办法手动更改此代码中因子的级别?我想要一个在第一个图中带有权重的图,然后是 a,b,c 在它上面的顺序。但我得到的输出是重量、c、a 和 b,如图所示
这是我的代码
df<-data.frame("time"= seq(0.01,10,length.out=100),"Weight"=1:100, "a"=rnorm(100),"b"=rnorm(100),"c"=rnorm(100))
q <- df%>%
tidyr::gather(variable, value, -time) %>%
transform(id = as.integer(factor(variable))) %>%
plot_ly(x = ~time, y = ~value, color = ~variable, colors = "Dark2",
yaxis = ~paste0("y", id)
) %>%
layout(
xaxis = list(title = "Time,s",tickfont = list(size = 17),titlefont = list(size = 20)),
yaxis = list(tickfont = list(size = 17), title="DP"),
hoverlabel = list(font=list(size=20))
) %>%
add_lines() %>%
subplot(nrows = length(df)-1, shareX = TRUE)
解决方案
一种方法是重新排序因子水平,如下所示:
# set.seed to keep the exact same results
set.seed(123)
df<-data.frame("time"= seq(0.01,10,length.out=100),"Weight"=1:100, "a"=rnorm(100),"b"=rnorm(100),"c"=rnorm(100))
DF <- df%>%
tidyr::gather(variable, value, -time) %>%
transform(id = as.integer(factor(variable)))
DF$variable <- factor(DF$variable, levels = c("Weight", "a", "b", "c")) #re-order
q <- DF %>%
plot_ly(x = ~time, y = ~value, color = ~variable, colors = "Dark2",
yaxis = ~paste0("y", sort(id, decreasing =F))) %>% #sort the order
layout(
xaxis = list(title = "Time,s",tickfont = list(size = 17),titlefont = list(size = 20)),
yaxis = list(tickfont = list(size = 17), title="DP"),
hoverlabel = list(font=list(size=20))
) %>%
add_lines() %>%
subplot(nrows = length(df)-1, shareX = TRUE)
q
您将需要sort(id, decreasing =F)
获得与您设置的完全相同的顺序factor(DF$variable, levels = c("Weight", "a", "b", "c"))
。
推荐阅读
- css - 如何进行背景过渡?
- wordpress - 登录验证在我的帐户页面上不起作用(wordpress)
- html - XPATH 根据上面元素中的名称返回 html 元素的内容
- python - 在 Python spyder 中未在控制台中显示输出
- qt - 为什么启动 QProcess 会冻结 QWidget 子类中的 GUI,但不会冻结 QLineEdit 子类中的 GUI?
- c# - 将数据从 C# 安全地发送到 MySQL 数据库
- django - 在模板中的django中实现倒计时
- spyder - 在 Spyder IDE 中,如何在帮助窗口中更改渲染数学方程的字体大小?
- node.js - 我可以从 jwt 键中删除除第一个和最后一个以外的所有换行符吗
- r - txt 中阅读中文时出错:corpus() 仅适用于字符、语料库、语料库、data.frame、kwic 对象