代码之家  ›  专栏  ›  技术社区  ›  Stonecraft

在ggplot/R中使用位置参数进行文本排斥

  •  5
  • Stonecraft  · 技术社区  · 7 年前

    我试图在文本标签相互排斥的地方创建一个geom\u点,并指向它们的关联点,即使我使用的是position=dodge或position=jitter。我还有很多要标记的点,这就是为什么我想使用ggrepel或类似的东西。我的理解是,我不能将position参数用于ggrepel。

    有没有什么方法可以得到这样的图,除非线段指向它们的关联点?

    require(ggplot2)
    require(ggrepel)
    data("mtcars")
    mtcars$cyl <- as.factor(mtcars$cyl)
    mtcars$am <- as.factor(mtcars$am)
    
    require(ggplot2)
    require(ggrepel)
    dodge = position_dodge(1)
    ggplot(mtcars, aes(x = am, y=mpg)) +
      geom_point(size=3, position=dodge, alpha=0.5, aes(color=cyl)) +
      geom_text_repel(data = mtcars,
                      aes(label = mpg, x=am, y=mpg),  alpha=0.9, size=4,
                      segment.size = .25, segment.alpha = .8, force = 1)
    

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  8
  •   Kamil Slowikowski    7 年前

    今天,我更新了ggrepel以支持 position 版本0.7.3中的选项。

    请尝试一下,让我知道它是怎么回事。

    如果您有问题,请在此处报告: https://github.com/slowkow/ggrepel/issues

    安装ggrepel的0.7.3版:

    devtools::install_github("slowkow/ggrepel")
    

    让我们试试:

    require(ggplot2)
    require(ggrepel)
    data("mtcars")
    mtcars$cyl <- as.factor(mtcars$cyl)
    mtcars$am <- as.factor(mtcars$am)
    
    dodge <- position_dodge(1)
    ggplot(mtcars, aes(x = am, y = mpg, label = mpg)) +
      geom_point(
        mapping = aes(color = cyl),
        position = dodge,
        size = 3,
        alpha = 0.5
      ) +
      geom_text_repel(
        mapping = aes(group = cyl),
        position = dodge,
        size = 4,
        alpha = 0.9,
        segment.size = .25,
        segment.alpha = .8,
        force = 1
      )
    

    ggrepel with position

    推荐文章