2015-08-18 53 views
0

我想绘制一些情节和每个分段取决于分数我想绘制颜色作为从蓝色( - 值) - 白色(0值) - 红色(+值)。 现在使用我的代码的Segments部分我可以做到这一点,如果我给出一个特定的颜色,如col="red" or col="blue",它很好。所以,由于我的数据的庞大规模,我想用那么自动化它:R调色板不打印指定的颜色

rbPal <- colorRampPalette(c('red','white','blue')) 
jcolor<-rbPal(nrow(datasetsize)) 

的问题是,当我到达绘图数据,它只是绘制颜色随机,而不是我一直在使用的颜色分配的颜色即使检查html颜色代码,调色板也是正确的颜色。任何帮助将不胜感激。 (请参见下面的代码)

测试数据:

Sample loc Start End p sm 
S1 9 1000000 10000000 2 -7.5751 
S2 9 11000000 18000000 6 -1.5906 
S3 9 20000000 40000000 3 0 
S4 9 50000000 70000000 2 0.8 
S5 9 80000000 100000000 2 1.25 
S6 9 110000000 140000000 6 7.789 

代码:

### Read in Data 
data<-read.table("stack_eg.txt",header=TRUE,sep="\t") 

### Order Setdata Object 
data<-data[order(data$sm,decreasing=T),] 

### Setup Plot Space 
plot(1, type="n", axes=T, xlab="X", ylab="Y",ylim=c(1,6),xlim=c(0,142000000)) 

### Color setup 
rbPal <- colorRampPalette(c('red','white','blue')) 
jcolor<-rbPal(6) 
jonzo<-cbind(data,jcolor) 

### Plot data 
for(l in 1:nrow(jonzo)){ 
    startpos<-jonzo$Start[l] 
    endpos<-jonzo$End[l] 
    segments(startpos,2,endpos,2,col=jonzo$jcolor[l]) 
} 

我得到的图像像这样: enter image description here

而是这样一个形象: enter image description here

+0

感谢小费。我注意到,从jonzo读取颜色代码似乎是一个问题。如果我删除它,只需从jcolor中拉出颜色,效果很好。 – Jcrow06

回答

0

好了,所以它看起来像这个问题是在下面的章节:

jonzo<-cbind(data,jcolor) 

这从读取颜色代码#FF0000列绑定的文件。 如果单纯从该jcolor对象,然后它的工作原理和下面的图像产生阅读的颜色代码: enter image description here

下面是对于那些有兴趣的调整代码:

### Read in Data 
data<-read.table("stack_eg.txt",header=TRUE,sep="\t") 

### Order Setdata Object 
data<-data[order(data$sm,decreasing=T),] 

### Setup Plot Space 
plot(1, type="n", axes=T, xlab="X", ylab="Y",ylim=c(1,6),xlim=c(0,142000000)) 

### Color setup 
rbPal <- colorRampPalette(c('red','white','blue')) 
jcolor<-rbPal(6) 

### Plot data 
for(l in 1:nrow(jonzo)){ 
    startpos<-jonzo$Start[l] 
    endpos<-jonzo$End[l] 
    segments(startpos,2,endpos,2,col=jcolor[l]) 
}