【问题标题】:ggplot: manual color assignment for single variable onlyggplot:仅对单个变量进行手动颜色分配
【发布时间】:2013-11-10 22:27:57
【问题描述】:

我有这个情节:

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()

现在我想仅更改一个变量(仅适用于一个国家/地区)的颜色和线条粗细(黑色,比其他的粗约 30%)。

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

【问题讨论】:

  • 图片提示:您可以将其添加为链接,然后有更多声誉的人可以添加它!
  • 谢谢,如果你是支持我的问题的人,我认为你给了我足够的声誉来发布图片。

标签: r ggplot2


【解决方案1】:

如果没有一些可重复的数据有点困难,但您应该能够通过添加仅使用该特定国家/地区的数据的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))))

【讨论】:

  • 嗨,当我这样做时,我只得到一个变量(图中的线),没有别的。为了重现性,我添加了整个代码(数据来自 WDI 库,因此无需生成)
  • @user1754606:问题可能只是在ylab() 之后缺少+,我注意到一旦我有了你的代码。
  • 哦,我刚刚注意到,虽然图中的线变成了黑色,但图例中的标签仍然是之前的颜色。如何将图例也更改为黑色?
  • @user1754606:查看我的编辑。你可以做到,但不一定漂亮。
猜你喜欢
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多