下面顯示了my中跨s三個sggplot()的變數變化。RatioYeariddata
我想知道當任何兩個s減少時如何標記(指示id名稱)和顏色代碼(紅色)線?idYear
例如,對于中間的線(id標簽A),我們看到從 2019 年到 2020 年有所減少。
所以,我們想用紅色對那條線進行顏色編碼,并用它來標記這條線id(見下圖)。
這在R中可能嗎?
library(tidyverse)
m="
id Year Ratio
A yr2019 .5
A yr2020 .3
A yr2021 .4
B yr2019 .2
B yr2020 .2
B yr2021 .1
C yr2019 .6
C yr2020 .7
C yr2021 .9"
data <- read.table(text= m, h= TRUE)
ggplot(data, aes(Year, Ratio, group= id)) geom_line()

uj5u.com熱心網友回復:
這可以使用 geom_line() 函式中的顏色屬性。棘手的部分是正確設定每個段的第一個點的顏色。為了使跟蹤和除錯更容易,我在原始資料框中添加了一個顏色列。
data <- structure(list(id = c("A", "A", "A", "B", "B", "B", "C", "C", "C"),
Year = c("yr2019", "yr2020", "yr2021", "yr2019", "yr2020",
"yr2021", "yr2019", "yr2020", "yr2021"),
Ratio = c(0.5, 0.3, 0.4, 0.2, 0.2, 0.1, 0.6, 0.7, 0.9)),
class = "data.frame", row.names = c(NA, -9L))
library(dplyr)
library(ggplot2)
#sort by id and Year
#if the next value is less then set color to red, if greater then set to red
data <- data %>% arrange(id, Year) %>% group_by(id) %>% mutate(color = ifelse(lead(Ratio) >= Ratio, "green", "red"))
#set last value of each group to black as default
data$color[is.na(data$color)] <- "black"
#plot
ggplot(data, aes(Year, Ratio, group= id))
geom_line(aes(color=color)) #or geom_line(color=data$color)
scale_color_identity()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/532042.html
下一篇:添加到整數串列
