2016-09-29 101 views
0

我有一个图表,其中layer_text元件overplot:如何避免与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) 

我想抵消文本使其可读。我正在考虑调整y的值,如果这些值为==,但图表需要放在一个闪亮的应用程序中,最终可能会有超过2个重叠的文本。这就是为什么我想知道是否有任何可以提供更稳定解决方案的软件包/属性。

该解决方案应该是这个样子:

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) 

回答

0

标签位置是出了名的棘手的问题。 ggrepel实现了一个很好的算法解决方案,但它不适用于ggvis,只有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