【问题标题】:Coloring a line plot based on a third factor in ggplot根据 ggplot 中的第三个因素为线图着色
【发布时间】:2015-05-06 16:07:40
【问题描述】:

我在ggplot 的配色方案上遇到了困难。如果有人可以帮助我或将我发送到另一个问题,那就太好了。

我的数据看起来像

day=rep(1:10, 5)
year=rep(1992:1996, each=10)
state=rep(c("A","B"), each=25)
set.seed(4)
y=runif(50, 5.0, 7.5)
df=data.frame(year,day,state,y)
> head(df)
  year day state        y
1 1992   1     A 6.464501
2 1992   2     A 5.022364
3 1992   3     A 5.734349
4 1992   4     A 5.693437
5 1992   5     A 7.033936
6 1992   6     A 5.651069

我想创建一个类似于下面的情节。使用代码:

library(ggplot2)
p = ggplot(df, aes(day, y))
p = p + geom_line(aes(colour = factor(year)))
print(p)

我希望着色基于state 变量。我希望状态“A”的年份是一种颜色,而状态“B”的年份是另一种颜色。

谢谢

【问题讨论】:

  • 这不起作用:colour = factor(state) 吗?而不是colour = factor(year).
  • 所以你想为每个州和年份的组合使用不同的颜色?如果是这样,colour=interaction(state, factor(year)).
  • 如果您对state 使用不同的审美,例如线型或线宽,您的图表可能更容易理解。
  • @zx8754 不,它只会有两行,一个用于'A',一个用于'B'......我仍然想要每年一行
  • @eipi10 我试过了,它使 2 的每个组合都有不同的颜色]

标签: r ggplot2


【解决方案1】:

如果您希望它按年份分隔但按州着色,关键是使用 group= 参数:

ggplot(data=df, aes(x=day, y=y, group=year, colour=state)) +
  geom_line() +
  geom_point()

【讨论】:

  • 谢谢阿甘!这正是我想要的!
猜你喜欢
  • 2021-03-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 2015-10-19
  • 1970-01-01
  • 2021-09-05
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多