C 使用基于变量着色的线段绘制分段直线
我试图画一个图(在R或gnuplot中),其中x轴表示单个样本,y轴被分割以表示时间的不同部分。每个线段(或方框)将根据第三个变量(是、否或未知)着色 其中是的颜色=绿色,否=红色;未知=灰色 有人能提出解决办法吗?我一直遇到同样的问题,那就是基于第三个变量为一个片段指定颜色会带来困难C 使用基于变量着色的线段绘制分段直线,c,r,fortran,gnuplot,C,R,Fortran,Gnuplot,我试图画一个图(在R或gnuplot中),其中x轴表示单个样本,y轴被分割以表示时间的不同部分。每个线段(或方框)将根据第三个变量(是、否或未知)着色 其中是的颜色=绿色,否=红色;未知=灰色 有人能提出解决办法吗?我一直遇到同样的问题,那就是基于第三个变量为一个片段指定颜色会带来困难 其他一些论坛用户似乎遇到了同样的问题,但到目前为止,我还没有看到一个简单的解决办法。大多数人建议做多个绘图并叠加它们。我想知道是否有什么方法可以重新思考这个问题,或者重新格式化数据,这可能会有所帮助?我不知道你的
其他一些论坛用户似乎遇到了同样的问题,但到目前为止,我还没有看到一个简单的解决办法。大多数人建议做多个绘图并叠加它们。我想知道是否有什么方法可以重新思考这个问题,或者重新格式化数据,这可能会有所帮助?我不知道你的意思,但这是我最好的猜测。(事实上,我猜您希望翻转x轴和y轴,但这应该会给您一个良好的开端。) 数据: 您可能还可以使用
segments()
执行最后一位
谢谢,这是一个很大的帮助。
SampleID y1 y1(answer) y2 y2(answer) y3 y3(answer)
Sample 1 0-50 yes 51-60 no 61-85 yes
Sample 2 0-40 yes 41-60 no 61-86 no
Sample 3 0-45 unknown 46-69 yes 70-85 unknown
dd <- read.table(text="
SampleID y1 y1(answer) y2 y2(answer) y3 y3(answer)
Sample_1 0-50 yes 51-60 no 61-85 yes
Sample_2 0-40 yes 41-60 no 61-86 no
Sample_3 0-45 unknown 46-69 yes 70-85 unknown",
header=TRUE)
library(reshape2)
dd2 <- melt(dd,id.var=1)
dd2 <- transform(dd2,
var2=substr(as.character(variable),1,2),
type=ifelse(grepl("\\.",as.character(variable)),"answer","range"))
dd2 <- subset(dd2,select=-variable)
dd3 <- dcast(dd2,SampleID+var2~type)
library("stringr")
dd3 <- transform(dd3,start=as.numeric(str_extract(range,"^[0-9]+")),
end=as.numeric(str_extract(range,"[0-9]+$")),
answer=factor(answer,levels=c("yes","no","unknown")))
library("ggplot2")
ggplot(dd3)+
geom_segment(aes(x=start,xend=end,y=SampleID,yend=SampleID,colour=answer))+
scale_colour_manual(values=c("red","green","gray"))+
theme_bw()