您需要转换您的数据(“融化”它)。
# Transform data using melt from reshape2 package
library(reshape2)
# We melt by column "Year"
satMelt <- melt(sat, "Year")
# Plot
ggplot(satMelt, aes(Year, value, color = variable)) +
geom_point()
如果您不想使用颜色,则可以使用构面:
ggplot(satMelt, aes(Year, value)) +
geom_point() +
facet_wrap(~ variable, ncol = 2)
PS:这是“融化”数据的样子:
# Year variable value
# 1972 CRMale 531
# 1973 CRMale 523
# 1974 CRMale 524
# 1972 CRFemale 529
# 1973 CRFemale 521
# ...
编辑:我注意到您的数据中有组(例如“性别”)。
我们可以提取这些信息:
satMelt$gender <- sub("^CR|^M", "", satMelt$variable)
satMelt$type <- sub(paste(unique(satMelt$gender), collapse = "|"), "", satMelt$variable)
# Year variable value gender type
# 1972 CRMale 531 Male CR
# 1973 CRMale 523 Male CR
# 1974 CRMale 524 Male CR
# 1972 CRFemale 529 Female CR
# 1973 CRFemale 521 Female CR
# 1974 CRFemale 520 Female CR
并用它来创建这样的情节:
ggplot(satMelt, aes(Year, value, color = gender, linetype = type, shape = type)) +
geom_point() +
geom_line()
为了让情节更具视觉吸引力,我们可以试试这个:
ggplot(satMelt, aes(Year, value, color = gender, linetype = type)) +
geom_point(size = 3, alpha = 0.6) +
geom_line(size = 1, alpha = 0.8) +
scale_x_continuous(breaks = sat$Year) +
labs(title = "Change in value over years",
subtitle = "By gender and type",
y = "Value",
color = "Gender",
linetype = "Type") +
theme_minimal()