2013-01-17 39 views
1

x轴值I有以下代码,使我的数据的曲线图:颜色点由在ggplot

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) 

这产生与“无功”是x轴和“值”是一个曲线图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")]) 

但我不能得到它的工作。如果任何人都可以提供帮助,那么这很棒。谢谢。

回答

0

关于你的第一个问题,你可以使用cut函数来将你的连续数据分类。例如:

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

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

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-多边形

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

enter image description here

+0

谢谢您的帮助。对不起,我没有让自己更清楚。我使用的数据是5种不同的类别,因此我希望能够给出1到10的所有点单一颜色,11到20另一种颜色等等。为了使这更容易看到,我正在考虑使用Var(1到41)中的最高值,它是变量5和最低值,变量10,并将它们与点相同的颜色进行遮蔽。因此,对于1到10的值,将会有一种颜色的阴影背景,然后从11到20会有另一种颜色等等。 – Chris