2016-09-29 4 views
0

Ich habe ein Diagramm, in dem die layer_text Elemente overplot:Wie vermeidet man eine Überladung mit text_layer?

data.frame(label=c("First", "Second","First","Second"), x=c(100,100,20,20),y=c(100,100,20,20)) %>% 
    ggvis(~x,~y) %>% 
    layer_text(text:=~label) 

Ich mag würde den Text versetzen, um es lesbar zu machen. Ich habe darüber nachgedacht, die y Werte zu optimieren, wenn die == sind, aber das Diagramm muss in eine glänzende App gehen, und ich könnte am Ende mehr als 2 überlappenden Text haben. Deshalb habe ich mich gefragt, ob es ein Paket/Attribut gibt, das eine stabilere Lösung bieten kann.

wie folgt aussehen sollte die Lösung:

data.frame(label=c("First", "Second","First","Second"), x=c(100,100,20,20),y=c(100,98,20,18)) %>% 
    ggvis(~x,~y) %>% 
    layer_text(text:=~label) 

Antwort

0

ist Label-Platzierung ein notorisch schwierige Problem. ggrepel implementiert eine nette algorithmische Lösung, aber es ist nicht verfügbar für ggvis, nur ggplot2.

library(ggplot2) 
library(ggrepel) 
library(magrittr) 

data.frame(label=c("First", "Second","First","Second"), 
      x=c(100,100,20,20), 
      y=c(100,100,20,20)) %>% 
    ggplot(aes(x,y,label=label)) + 
    geom_text_repel() + 
    theme_bw() 

enter image description here

Verwandte Themen