控制叠加线,而颜色是 ggplot 中的连续值
control overlaying lines while color is continuous value in ggplot
我有一个数据,想绘制线条并控制线条彼此叠加的顺序。
我想使用 'cale_color_viridis()' 作为我的托盘。我不知道如何在较暗的线上绘制较浅(黄色)线。
这是我的玩具数据框和我的代码:
toy_data <- data.frame(x = c(1,3,1,2,5,0), y = c(0, 01, 1, 0.6, 1, .7),
col = rep(c("r", "b", "g"), each = 2), group = seq(0,1, by = 0.2))
ggplot(toy_data, aes(x = x, y = y, group = col, color = group)) +
geom_line(size = 2) +
scale_color_viridis()
知道我该怎么做吗?
group
美学决定绘图顺序,在本例中,col
变量是字符数据。它通常会按字母顺序 (b g r) 绘制,因此要让 col "g" 的黄线最后打印,您可以将其转换为按出现顺序排序的因子,例如 forcats::fct_inorder
:
ggplot(toy_data,
aes(x = x, y = y, group = col %>% forcats::fct_inorder(), color = group)) +
geom_line(size = 2) +
scale_color_viridis_c() # added in ggplot2 3.0 in July 2018.
# scale_color_viridis for older ggplot2 versions
如果 col
是数字,你可以通过给你的“顶级”系列最大的数字来达到同样的目的。
toy_data2 <- data.frame(x = c(1,3,1,2,5,0), y = c(0, 01, 1, 0.6, 1, .7),
col = rep(c(3, 1, 2), each = 2), group = seq(0,1, by = 0.2))
ggplot(toy_data2,
aes(x = x, y = y, group = if_else(col == 2, 1e10, col), color = group)) +
geom_line(size = 2) +
scale_color_viridis_c()
我有一个数据,想绘制线条并控制线条彼此叠加的顺序。
我想使用 'cale_color_viridis()' 作为我的托盘。我不知道如何在较暗的线上绘制较浅(黄色)线。
这是我的玩具数据框和我的代码:
toy_data <- data.frame(x = c(1,3,1,2,5,0), y = c(0, 01, 1, 0.6, 1, .7),
col = rep(c("r", "b", "g"), each = 2), group = seq(0,1, by = 0.2))
ggplot(toy_data, aes(x = x, y = y, group = col, color = group)) +
geom_line(size = 2) +
scale_color_viridis()
知道我该怎么做吗?
group
美学决定绘图顺序,在本例中,col
变量是字符数据。它通常会按字母顺序 (b g r) 绘制,因此要让 col "g" 的黄线最后打印,您可以将其转换为按出现顺序排序的因子,例如 forcats::fct_inorder
:
ggplot(toy_data,
aes(x = x, y = y, group = col %>% forcats::fct_inorder(), color = group)) +
geom_line(size = 2) +
scale_color_viridis_c() # added in ggplot2 3.0 in July 2018.
# scale_color_viridis for older ggplot2 versions
如果 col
是数字,你可以通过给你的“顶级”系列最大的数字来达到同样的目的。
toy_data2 <- data.frame(x = c(1,3,1,2,5,0), y = c(0, 01, 1, 0.6, 1, .7),
col = rep(c(3, 1, 2), each = 2), group = seq(0,1, by = 0.2))
ggplot(toy_data2,
aes(x = x, y = y, group = if_else(col == 2, 1e10, col), color = group)) +
geom_line(size = 2) +
scale_color_viridis_c()