ggplot:仅用于单个变量的手动颜色分配

时间:2013-11-10 22:27:57

标签: r ggplot2

我有这个情节:

ggplot(data3, aes(year, NY.GDP.MKTP.KD.ZG, color = country)) + geom_line() + 
  xlab('Year') + ylab('GDP per capita')
  labs(title = "Annual GDP Growth rate (%)") +
  theme_bw()

enter image description here

现在我想仅为一个变量更改颜色和线条粗细(黑色,厚度比其他厚度大约30%)(仅限一个国家/地区)。

我已经找到了如何为所有变量手动分配颜色,但不知道如何仅为一个变量分配颜色。此外,图表可以有不同数量的变量(国家/地区),具体取决于输入数据。

1 个答案:

答案 0 :(得分:7)

如果没有一些可重复的数据,有点困难,但您应该能够通过添加仅使用该特定国家/地区的数据的geom_line()来实现此目标:

ggplot(data3, aes(year, NY.GDP.MKTP.KD.ZG, color = country)) + geom_line() + 
  xlab('Year') + ylab('GDP per capita') +
labs(title = "Annual GDP Growth rate (%)") +
  theme_bw() +
  geom_line(data=subset(data3, country == "China"), colour="black", size=1.5)

使图例与颜色和大小保持一致有点棘手 - 你可以通过override.aes手动黑客攻击传奇,但它不一定是最优雅的解决方案:

# Needed to access hue_pal(), which is where ggplot's
# default colours come from
library(scales)

ggplot(data3, aes(year, NY.GDP.MKTP.KD.ZG, color = country)) + geom_line() + 
  xlab('Year') + ylab('GDP per capita') +
  labs(title = "Annual GDP Growth rate (%)") +
  theme_bw() +
  geom_line(data=subset(data3, country == "World"), colour="black", size=1.5) +
  guides(colour=guide_legend(override.aes=list(
    colour=c(hue_pal()(11)[1:10], "black"), size=c(rep(1, 10), 1.5))))