颜色指向ggplot中的x轴值

时间:2013-01-17 18:46:02

标签: r

我有以下代码来制作我的数据图表:

library(ggplot2)
library(reshape)

sdata <- read.csv("http://dl.dropbox.com/u/58164604/sdata.csv", stringsAsFactors = FALSE)
pdata<-melt(sdata, id.vars="Var")
p<-ggplot(pdata, aes(Var,value,col=variable))
p+geom_point(aes(shape = variable),alpha=0.7)

这将创建一个图形,其中'Var'是x轴,'value'是y轴。 我想做的是改变点的颜色。而不是变量名,我希望它们是'Var'值。所以我希望Var值在1-10之间的所有点都是一种颜色,11-20是另一种颜色,依此类推21-30,31-35和36-41。我还希望在这些点后面有一个带状/区域阴影,从每个Var值的最高值延伸到最低值,但是这个色带也必须具有与点相同的颜色,只是透明度较低水平。

对于奖金问题,我也无法从我的示例中获取'mean'变量,以显示为geom_line而不是geom_point。我一直在玩这个:

 p+geom_point()+geom_line(data=pdata[which(pdata$variable=="Mean")])

但我无法让它发挥作用。如果有人可以帮助解决这些问题,那就太棒了。感谢。

2 个答案:

答案 0 :(得分:1)

cut与选项labels=F一起使用,我为着色添加了一个新变量。

pdata <- transform(pdata,varc =cut(pdata$Var,10,labels=F))
p<-ggplot(subset(pdata,variable!='Mean'), aes(Var,value,col=varc))
p+geom_point(aes(shape = variable),alpha=0.7)+
 geom_line(data=subset(pdata,variable =='Mean'),size=2)

编辑:功能区部分

我不明白功能区的部分(也许你可以更多地解释上下值),但我想在这里我们可以简单地使用geom-polygon

last_plot()+ geom_polygon(aes(fill=varc, group=variable),alpha=0.3,linetype=3) 

enter image description here

答案 1 :(得分:0)

关于第一个问题,您可以使用cut功能将连续数据分类。例如:

with(mtcars, cut(mpg, seq(min(mpg), max(mpg), length = 5))

这会将mpg列中的连续值分为5个类。