有没有办法改变R中缺失数据的点的形状?我正在用棒棒糖风格绘制像这样的.csv文件 .
Name,chr,Pos,Reads...ME_016,Reads...ME_017,Reads...ME_018,Reads...ME_019
cg01389728,chr10,6620395,33.82,41.38,41.38,38.46
cg01389728,chr10,6620410,0,-,-,-
cg01389728,chr10,6620430,0,0,-,-
cg01389728,chr10,6620447,0,-,0,-
cg01389728,chr10,6620478,0,-,-,-
cg01389728,chr10,6620510,28.33,29.85,25.64,28.13
cg01389728,chr10,6620520,0,0,-,0
cg01389728,chr10,6620531,0,-,50,-
使用ggplot2,我的图形创建如下:
dataset <-read.table("testset", sep=",",na.strings="-", header=TRUE)
dataset <- subset(dataset, select=c(-Name, -chr))
dataset <- melt(dataset, id.vars="Pos")
dataset$variable <- gsub("\\.\\.\\.","_",dataset$variable)
xaxes <- unique(dataset$Pos)
dataset$Pos <- as.factor(dataset$Pos)
ggplot(dataset, aes(x=Pos, y=variable,fill=cut(value, breaks=10))) + geom_point(size=4, shape=21) + geom_line() + scale_fill_discrete(labels=c("0-10%","10-20%","20-30%","30-40%","40-50%","50-60%","60-70%","70-80%","80-90%","90-100%")) +
xlab("CpG Positions") +
ylab("Sample") +
labs(fill="Coverage in %") +
theme_bw() +
theme(axis.text.x = element_text(angle=90, hjust=1, vjust=0.5),plot.title = element_text(vjust=2),axis.title.x = element_text(vjust=-0.5),axis.title.y = element_text(vjust=1.5))
但是,我想将绘图中缺失点(“ - ”)的形状设置为“x”,(shape = 4)并在图例中显示它们 . 我尝试过这样的方法:
scale_fill_manual(values=c(value, NA))
要么:
scale_shape_manual(values=c(21,4))
默认情况下,“ - ”也显示为形状21和灰色 . 一定有办法操纵这个吗?编写这样的方法可能是诀窍,但如何为整个列调用它?
formas <- function(x){
+ if(is.na(x)) forma <- 4
+ if(!is.na(x)) forma <- 21
+ return(forma)
+ }
3 回答
我看不出,为什么这不起作用:
使用X不再显示NA值,而不是以“灰色”显示它们,90-100%类将以灰色显示 . 没有显示错误消息 - 问题是什么?
我认为这非常接近 .
变化是:
使用颜色而不是填充,
shape=19
用于带数据的点将
shape
审美添加到ggplot(...)
来电 .从
geom_point(...)
电话中删除shape=21
.添加
scale_shape_manual(...)
以定义Missing
和Present
的形状,并关闭指南标签 .我知道你想要带有黑色轮廓的填充点(看起来确实更好),但是当我尝试使用增加的形状审美时,填充图例不能正确显示颜色 . 亲自尝试一下 .
这是另一种方法,它更接近于生成您指定的图形(带有黑色轮廓的圆形点和由覆盖率确定的填充颜色) .
使用点形状21和填充美学的另一个答案中的问题是,虽然填充颜色在图中正确显示,但它们在图例中无法正确显示 . 一种方法是强制
ggplot
使用设置图例填充颜色不幸的是,要做到这一点,你必须手动指定填充颜色(以便实际填充和覆盖填充是相同的) . 这段代码使用
它创建了一个模仿
ggplot
默认值的调色板 . 你当然可以在这里使用自己的调色板 .虽然这确实更接近您的原始意图,但实际上我认为另一个答案提供了更好的数据可视化 . 点周围的黑色轮廓虽然“有吸引力”,但却更难以区分填充颜色,尤其是10种可能的颜色(无论如何都处于可辨别的边缘) .