我有一個折線圖,其中包含不同年份和月份的指標。我想為每個月添加一條中線。
library(dplyr)
library(lubridate)
library(ggplot2)
set.seed(52)
data <- tibble(
date = seq.Date(from = as.Date("2017-01-01"), to = date("2020-12-31"), by = "month")
) %>%
mutate(
metric = rnorm(n(), mean = 5, sd = 2),
month = month(date, label = TRUE),
year = as.factor(year(date))
)
ggplot(data, aes(x = month, y = metric, color = year, group = year))
geom_line()

我嘗試使用 geom_hline() 來做到這一點,但它只為總中位數生成一條線。
ggplot(data, aes(x = month, y = metric, color = year, group = year))
geom_line()
geom_hline(aes(yintercept = median(metric), group = month))

由
uj5u.com熱心網友回復:
這是你想要的...?
ggplot(data, aes(x = month, y = metric, color = year, group = year))
geom_line()
geom_tile(data = function(df) df %>% group_by(month) %>%
summarise(metric = median(metric)),
aes(x = month, y = metric), height = 0.05, inherit.aes = FALSE)

或者,感謝@user20650 在下面的評論,這也有效......
ggplot(data, aes(x = month, y = metric, color = year, group = year))
geom_line()
stat_summary(aes(x = month, y = metric),
fun = median,
geom = "tile",
height = 0.05,
inherit.aes = FALSE)
uj5u.com熱心網友回復:
你可以使用ave.
如果您需要每年或幾個月的中線,我沒有得到它,所以我將向您展示兩者。
每年的中位數
ggplot(data, aes(x = month, y = metric, color = year, group = year))
geom_line()
geom_line(aes(y = ave(metric, year, FUN = median)))

月中位數
ggplot(data, aes(x = month, y = metric, color = year, group = year))
geom_line()
geom_line(aes(y = ave(metric, month, FUN = median), colour = "median"), size = 2)

編輯:
由于您對水平線感興趣,因此您有一個替代解決方案:
ggplot(data, aes(x = month, y = metric, color = year, group = year))
geom_line()
stat_summary(aes(x = month, y=metric), fun = median, geom = "point", shape = "-", size = 15, inherit.aes = FALSE)

uj5u.com熱心網友回復:
不確定這是否是您要查找的內容,但您可以簡單地在資料集中使用中值指標創建一個新變數。您的第一組觀察結果按月分組,然后計算中值指標,然后取消分組資料。
data <- data %>% group_by(month) %>% mutate(median_metric=median(metric)) %>% ungroup()
一旦你這樣做,你只需指定yintercept變化median_metric
ggplot(data )
geom_line(aes(x = month, y = metric, color = year, group = year))
geom_hline(aes(yintercept = median_metric))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/360790.html
上一篇:拼湊不會為組合圖分配共同的圖例
