2013-01-17 111 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