【发布时间】:2013-11-04 22:36:10
【问题描述】:
样本数据集:
library(ggplot2)
df = read.table(text =
"id year value1 value2 value3
1 2000 1 2000 2001
1 2001 2 NA NA
1 2002 2 2000 NA
1 2003 2 NA 2003
2 2000 1 2001 2003
2 2002 2 NA 2000
2 2003 3 2002 NA
3 2002 2 2001 NA
", sep = "", header = TRUE)
df$value1 <- as.factor(df$value1)
我知道如何更改具有三个级别的因子变量的颜色:
p <- ggplot(df, aes(y=id))
p <- p + scale_colour_manual(name="", values =c("yellow", "orange", "red"))
p <- p + geom_point(aes(x=year, color=value1), size=4)
p
我还可以更改两个数值变量的颜色:
p <- ggplot(df, aes(y=id))
p <- p + scale_colour_manual(name="", values =c("value3"="grey", "value2"="black"))
p <- p + geom_point(aes(x=value3, colour ='value3'), size=3)
p <- p + geom_point(aes(x=value2, colour ='value2'), size=5)
p
但我不知道如何在同一张图中更改两者的颜色? 它也适用于 scale_color_manual 吗?
p <- last_plot() + geom_point(aes(x=year, color=value1))
p
【问题讨论】:
-
您可以使用 reshape 包将列融合在一起吗?这似乎很接近但不正确... require(reshape) melt(df,id.vars = c("id","year"), measure.vars=c("value1","value2")) df$value
-
可能,但我正在寻找一种也适用于两个以上 geom_points() 并且最好直接在 ggplot2 中的解决方案。我认为 ggplot2 中存在一个简单的方法,但我仍在拼命寻找它..