在ggplot中基于第三个因素对线图进行着色

7

我希望你能帮助我解决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) - zx8754
所以您想为每个州和年份的组合单独设置颜色吗?如果是这样,colour=interaction(state, factor(year)) - eipi10
如果你使用不同的美学元素来表示state,比如线型或线宽,那么你的图表可能会更容易理解。 - eipi10
@zx8754 不,它只有两行,一个是'A',另一个是'B'... 我仍然希望每年都有一行。 - Chloee Robertson
1
@eipi10 我试过了,它会使得每个2的组合都有不同的颜色。 - Chloee Robertson
1个回答

8
如果您想按年份分开,但又想以州为单位着色,关键在于使用group=参数:
ggplot(data=df, aes(x=day, y=y, group=year, colour=state)) +
  geom_line() +
  geom_point()

谢谢Forrest!这正是我在寻找的! - Chloee Robertson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接