最近我问question有关在1张图片中获取多张图表的问题。我得到了一些相当不错的答案,但仍然存在一个问题。
如何将散点图中的点更改为标签? 该图看起来像
现在我希望将所有黑点都更改为数据的rownames。 我用于绘图的代码如下:
plotAll<-function(data){
combs <- expand.grid(names(data), names(data))
out <- do.call(rbind, apply(combs, 1, function(x) {
tt <- data[, x]; names(tt) <- c("V1", "V2")
tt <- cbind(tt, id1 = x[1], id2 = x[2])
}))
library(plyr)
df.text=ddply(out[out$id1==out$id2,],.(id1,id2),summarise,
pos=max(V1)-(max(V1)-min(V1))/2)
out[out$id1==out$id2,c("V1","V2")]<-NA
ggplot(data = out, aes(x = V2, y = V1)) + geom_point(alpha = 0.5) +
facet_grid(id1 ~ id2,scales="fixed")+
geom_text(data=df.text,aes(pos,pos,label=id1)) + geom_abline( slope=1 ) +
ggtitle("Corralation between measured & calculated affinities") +
ylab("") + xlab("") + theme(panel.grid.minor.x=element_blank(), panel.grid.major.x=element_blank())
}
我知道我必须将geom_point(alpha=0.5)
的设置更改为具有geom_text(label=rownames(data))
的设置但是删除了我的轴并将rownames放在y轴上并放入我的数据点。所以我可能在绘制情节时做错了,但这仍然是一个问题。
答案 0 :(得分:0)
事实证明它比我想象的要困难得多......基本问题是NA
值 - geom_text
无法处理它们。通过这样做很容易解决:
geom_text(data = out[!is.na(out$V1),], label = "test")
但是当你去做rownames
作为标签时,就会出现问题。我没有弄清楚原因,但通过在数据框中添加标签列可以快速解决问题。完整功能如下。
plotAll<-function(data){
combs <- expand.grid(names(data), names(data))
out <- do.call(rbind, apply(combs, 1, function(x) {
tt <- data[, x]; names(tt) <- c("V1", "V2")
tt <- cbind(tt, id1 = x[1], id2 = x[2])
}))
library(plyr)
df.text=ddply(out[out$id1==out$id2,],.(id1,id2),summarise,
pos=max(V1)-(max(V1)-min(V1))/2)
out[out$id1==out$id2,c("V1","V2")]<-NA
out$labels <- rownames(out)
ggplot(data = out, aes(x = V2, y = V1)) + geom_text(data = out[!is.na(out$V1),], aes(label = labels)) +
facet_grid(id1 ~ id2,scales="fixed")+
geom_text(data=df.text,aes(pos,pos,label=id1)) + geom_abline( slope=1 ) +
ggtitle("Corralation between measured & calculated affinities") +
ylab("") + xlab("") + theme(panel.grid.minor.x=element_blank(), panel.grid.major.x=element_blank())
}
plotAll(data)