我有一个数据集,其中包括以下内容:年份(从 2000 年到 2020 年)、发病率(每年某种疾病的发病次数)和地点(30 个地点,29 个国家/地区,1 个全球数字)。
现在,我想使用 ggplot 在 R 中创建多时间序列图。我希望全球数字的线条与其他国家/地区不同,而其他国家/地区遵循彩虹调色板并具有实线类型,我希望全球数字的线条为黑色和虚线。
我编写了以下代码,但我无法进一步自定义它:
ggplot(df, aes(x=year, y=incidence) +
geom_line(aes(color=location)
实现所需结果的一个选项是使用自定义颜色和线型调色板,可以通过
scale_xxx_manual
将其应用于您的绘图。
使用一些基于
gapminder
数据集的虚假示例数据:
library(ggplot2)
library(dplyr, warn = FALSE)
library(gapminder)
# Make example data
set.seed(123)
locs_select <- sample(unique(gapminder$country), 29)
df <- gapminder |>
select(year,
location = country,
incidence = lifeExp
)
df <- df |>
summarise(
location = "Global",
incidence = mean(incidence), .by = year
) |>
bind_rows(
filter(df, location %in% locs_select)
)
###
pal_color <- scales::hue_pal()(30)
pal_lty <- rep("solid", 30)
names(pal_color) <- names(pal_lty) <- sort(unique(df$location))
pal_color["Global"] <- "black"
pal_lty["Global"] <- "dashed"
ggplot(df, aes(x = year, y = incidence)) +
geom_line(aes(color = location, linetype = location)) +
scale_color_manual(values = pal_color) +
scale_linetype_manual(values = pal_lty)