2013-05-02 3 views
2

Недавно я спросил question о получении нескольких графиков в пределах 1 изображения. Я получил неплохие ответы, но остается один вопрос.Изменить точки ggplot на текстовые метки

Как изменить точки из моего графика разброса в метки? Сюжет выглядит следующим образом enter image description here

Теперь я хочу, чтобы все черные точки были изменены на имена розеток данных. кода я использую для черчения выглядит следующим образом:

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 на у-оси и в моем . точки данных Так что, наверное, я сделал что-то не так с планировкой сюжета, но то, что остается, остается вопросом.

ответ

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) 
+0

Да, именно этого я и ожидал. Но это дает мне: Ошибка: Эстетика должна быть либо одной, либо той же длины, что и dataProblems: rownames (data) –

+0

Да ... Я смотрю на нее сейчас, после получения данных из вашего другого вопроса - Я вернусь к вам! – alexwhan

+0

Это что-то в 'facet_grid()', я думаю. Если вы измените формулу на '~ v2', она будет счастлива. – alexwhan

Смежные вопросы