问题标签 [ggrepel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1250 浏览

r - ggplot 区域外部(右侧)的 ggrepel 标签

抱歉上面的巨大数据框代码块。这就是我正在使用的。请将其复制粘贴到 R Studio 中以开始使用。

现在已经完成了,我正试图让ggrepel包标记红线,如下所示。我一直在旋转旋钮(参数),ggrepel但没有得到任何漂亮的东西。我希望标签不碍事,并到达图表的右侧,以相同的顺序排列线条。我们可以把标签也变成红色吗?

什么ggrepel论据能让我到达那里?或者有没有更好的方法来用普通的ggplot做到这一点?

ggrepel 标签

0 投票
2 回答
934 浏览

r - 用ggrepel覆盖水平定位

我正在制作一个类似于坡度图的图表,我想在一侧或两侧放置标签,并留有足够的空白空间以使其适合两侧。在标签很长的情况下,我将它们包裹起来stringr::str_wrap用于放置换行符。为了防止标签重叠,我使用ggrepel::geom_text_repelwithdirection = "y"所以 x 位置是稳定的,但 y 位置相互排斥。我还必须hjust = "outward"在其右端对齐左侧文本,反之亦然。

但是,似乎排斥定位将标签的边界框放置在 中hjust = "outward",但该标签中的文本具有,即文本在其边界内居中hjust = 0.5直到现在,我从未注意到这一点,但是使用包裹标签,第二行居中尴尬,而我希望看到两行左对齐或右对齐。

这是一个基于数据集构建的示例mpg

的其他值也会发生同样的情况hjust。查看函数的source,我看到一条指向此问题的行:

如果为空,%||%则分配 0.5 。x$data$hjust据我所知,但似乎hjust我设置的并没有被转移到这个位置,而是变成了空值。

我错过了什么吗?谁能在不重新实现整个算法的情况下看到我可以在哪里覆盖它?还是这里有一个错误会导致我的hjust?

0 投票
0 回答
241 浏览

r - 使边缘指向ggraph中的排斥标签

我正在使用 ggraph R 包创建一个图表。我想使用 标记所有节点geom_node_label(),但这通常会产生重叠。一种解决方法是使用repel=TRUE参数。不幸的是,我似乎无法弄清楚如何使边缘指向标签被移动的位置。

解决此问题的一种可能方法可能是在制作图形之前使用排斥进行布局,但我也没有找到解决方法。

以下是上述代码的图表:

  • 情节1:

在此处输入图像描述

  • 情节2:

在此处输入图像描述

0 投票
1 回答
787 浏览

r - 将 ggrepel 长标签移动到绘图线的右侧

我希望将标签完全移动到情节线的右侧。我不希望进一步扩展 x 轴。我只需要创造空间。我该怎么做呢?


0 投票
1 回答
904 浏览

r - 多面冲积图中的变量对齐 ggrepel 文本标签

我正在尝试创建一个多面冲积图,其中第一个轴上的地层标签向左和左对齐,右侧的标签向右和右对齐。

示例图 p

具有变量 alluvia 的示例图:p1

带有变量 alluvia 标签的示例图没有排斥:p1Norepel

总之,我想做的是:

  • 对于情节 p1(在不同方面具有不同数量的冲积层)
  • 标记每个 x 轴层列
  • 让axis1标签向左排斥并左对齐
  • 让axis2标签向右排斥并右对齐

这个答案建议标签的不同向量长度,但它不适用于不同的方面。 R中ggalluvial情节的标签和主题

0 投票
1 回答
771 浏览

r - 在同一个 geom_text 上使用 ggrepel 和 shadowtext

我有一个图(用 R 制作ggplot2),它是一堆文本数据的一些奇异值分解的结果,所以我基本上有一个数据集,包含一些评论中使用的约 100 个单词和约 10 个评论类别,带有 2D 坐标对于他们每个人。由于文本数量以及许多重要点之间的紧密程度,我无法让情节看起来清晰易读。

我的数据现在的结构方式,我geom_texts用不同的格式和诸如此类的东西绘制了 2 个不同的数据,将每个数据传递给一个单独的坐标数据框。这更容易,因为如果〜10个类别与〜100个术语重叠(这是次要的)很好,我希望两者的格式完全不同,但不一定有理由不能将它们放在一起数据框,geom我想是否有人能找到解决方案。

我想做的是使用该ggrepel功能,使〜10个类别相互排斥,并使用该shadowtext功能使它们从彩色单词的背景中脱颖而出,但是由于它们不同geom,我不确定如何实现这一目标。

带有一些虚假数据的最小示例:

第二个情节的结果,很好地排斥: 杂乱的情节,有很多单词,但类别标签是分开的

最后一张图的结果,在类别标签周围有这些看起来很干净的白色缓冲区: 杂乱无章的情节,类别标签彼此重叠,但以白色勾勒

有没有办法做到这两点?我尝试使用geom_label_repel无边框,但我认为它看起来不像 shadowtext 解决方案那样干净。

0 投票
1 回答
107 浏览

r - 有没有办法仅在单击时才在绘图中显示标签?

想象一下,我有这个数据集 data1(后缩放和 PCA)。

我使用以下方法对数据集进行了 k-means 聚类分析:

然后我从另一个数据集中插入了字符类型的行名:

然后,为了避免标签重叠,我使用了

哪个返回了这个

由于我有超过 500 个数据点,因此标签可以预见地重叠并且无法读取。我想知道当标签仅在您单击或悬停在数据点上时显示时是否有一种标签方法。或者欢迎任何其他解决方案。谢谢

0 投票
0 回答
183 浏览

r - 使用ggrepel使用换行符时如何左对齐?

我如何左证明我的标签使用geom_text_repel?在下面的示例中,我希望单词“very”位于单词“this”的下方。在这里,我使用左对齐设置,即hjust = 0

在此处输入图像描述

我可能需要使用annotate而不是ggrepel see - Justifying lines of text within individual ggrepel labels来解决这个问题,但ggrepel更可取

另一种选择可能是使用grid::grid.gedit,但我不明白如何应用这个框架来ggrepel查看 - ggplot2: How to left-justify text from multi-line facet labels?

编辑:这个问题中的问题类似于使用 ggrepel 覆盖水平定位,但问题不同之处在于我在这里使用hjust = 0,而另一个问题使用hjust = "outward"

0 投票
2 回答
1220 浏览

r - 调整 facet_grid() 中各个方面的 x 和 y 比例以适合 geom_text_repel() 标签?

我需要为facetfacet_grid 中的每个(3 行和 3 列)手动指定 x 轴和 y 轴的限制。

我有 2 个分类因子和一个连续的 y 值(所以我catch_ema_thousandsy轴上绘制 ,数据由redlistCategory(3 个级别)和TaxonGroup(3 个级别)分面,然后根据VARIABLE(也是 3 个级别)对点进行着色。

具有非常不均匀的facet_grid数据点数量和 y 值范围(0 - 1,700,大多数点聚集在 0 附近,一些刻面有 20 个点,而另一些刻面有 0 或 1)。

我必须scale_y_sqrt转换 y 轴,这会有所帮助,但仍然很难看到繁忙面上的点。

我在 中使用了scales = "free"andspace="free"参数facet_grid(),它调整了 facet 的大小以适应数据点,但不考虑拟合geom_text_repel()标签。

我必须在 内调整刻面大小ggrepel吗?

我要标注的~25种物种清单:

我真的很烦人的情节:

我尝试了一个新包,但出现错误:

然后,

覆盖 facet_grid() 中的“自由”比例有些不对劲,我收到此错误:

样地数据:

0 投票
1 回答
996 浏览

r - How to combine repelling labels and shadow or halo text in ggplot2?

There are some nice solutions for either repelling labels in ggplot2 (e.g. ggrepel) or shadow text for labels (e.g. ggshadowtext and this answer). But nothing that allows us to combine these two functions.

I tried this hack that prints the labels many times in slightly different locations, but it doesn't go well with geom_text_repel

It is very slow, and in the locations where the labels are close, this method is not effective:

enter image description here

How can we get shadow text that works with geom_text_repel? I posted an issue about this to the ggrepel GitHub repo some time ago, but there has been no reply (perhaps it's impossible?)