- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据集,其中每个数据点都有一个受约束的 x 值(代表一个定量变量的实际实例)、任意的 y 值(存在只是为了提供展开文本的维度)和一个标签.我的数据集可能非常大,并且经常存在文本重叠,即使我尝试将数据尽可能多地分布在 y 轴上也是如此。
因此,我正在尝试使用新的ggrepel。但是,我试图将文本标签限制在它们的 x 值位置,同时只允许它们在 y 方向上相互排斥。
例如,下面的代码为 32 个数据点生成一个图,其中 x 值显示汽车中的气缸数,而 y 值是随机确定的(没有意义,只是为文本绘图提供第二个维度目的)。不使用ggrepel,文中有明显重叠:
library(ggrepel)
library(ggplot2)
set.seed(1)
data = data.frame(x=runif(100, 1, 10),y=runif(100, 1, 10),label=paste0("label",seq(1:100)))
origPlot <- ggplot(data) +
geom_point(aes(x, y), color = 'red') +
geom_text(aes(x, y, label = label)) +
theme_classic(base_size = 16)
repelPlot <- ggplot(data) +
geom_point(aes(x, y), color = 'red') +
geom_text_repel(aes(x, y, label = label)) +
theme_classic(base_size = 16)
repelPlot2 <- ggplot(data) + geom_text_repel(aes(x, y, label = label), segment.size = 0) + theme_classic(base_size = 16)
最佳答案
我认为使用 ggrepel
不可能只在一个方向上排斥文本标签。 .
我会以不同的方式解决这个问题,而是手动生成任意 y 轴位置。例如,对于示例中的数据集,您可以使用以下代码执行此操作。
我用过 dplyr
包以按 x
的值对数据集进行分组,然后新建一列数据 y
包含每个组中的行号。然后将行号用作 y 轴的值。
library(ggplot2)
library(dplyr)
data <- data.frame(x = mtcars$cyl, label = paste0("label", seq(1:32)))
data <- data %>%
group_by(x) %>%
mutate(y = row_number())
ggplot(data, aes(x = x, y = y, label = label)) +
geom_text(size = 2) +
xlim(3.5, 8.5) +
theme_classic(base_size = 8)
ggsave("filename.png", width = 4, height = 2)
关于r - ggrepel : Repelling text in only one direction, 并返回排斥文本的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188707/
我想尽可能精确地在点上方绘制标签(无重叠),但 ggrepel 似乎坚持略微高于或低于绘制。例如 require(ggplot); require(ggrepel) ggplot(iris[1:10,
我正在尝试创建一个饼图来可视化 9 个属的丰度百分比。然而,标签都聚集在一起。我该如何补救?代码如下: generaabundance2020 % group_by(value) %>% # Va
我正在用 ggplot2 绘制热图。 y 轴上的几个刻度需要标记。然而,它们中的一些过于接近和重叠。我知道ggrepel可以分离文本标签,但目前我还没有解决我的问题。 我的代码如下。欢迎任何建议。谢谢
我正在尝试使用 geom_label_repel 将标签添加到图中的几个数据点。在这种情况下,它们恰好是箱形图上的异常值。我的大部分代码都在工作,我可以标记异常值,但由于某种原因,我得到了映射到该点的
我有一个相当密集的散点图,我正在使用 R 'ggplot2' 构建它,并且我想使用 'ggrepel' 来标记点的子集。我的问题是,我想绘制散点图中的所有点,但只用 ggrepel 标记一个子集,当我
想要绘制具有特定值的密度图(例如:中位数/均值/等)。我还想在绘图区域上方显示选定的值(例如中位数),因此它不会干扰分布本身。此外,在现实生活中,我有更大、更多样化的数据框(类别更多),所以我想分散标
我有一个 geom_gene_arrow 图,我需要使用 ggrepel 来防止标签重叠。不幸的是,我无法让它工作并得到错误提示“找不到函数“geom_text_repel”” 只有 geom_tex
我有一个 ggplot 图表,其中包含与此类似的数据: data 0), segment.alpha = .5, xlim = c(-5, 0), ylim = c(2.5, 5)) + ge
我试图在 geom_boxplot 中标记异常值使用 ggrepel::geom_label_repel .当只有一个分组变量时它工作得很好,但是当我尝试将它用于多个分组变量时,我遇到了问题。由于某种
我有一个数据集,其中每个数据点都有一个受约束的 x 值(代表一个定量变量的实际实例)、任意的 y 值(存在只是为了提供展开文本的维度)和一个标签.我的数据集可能非常大,并且经常存在文本重叠,即使我尝试
我正在使用最大方差旋转进行主成分分析,并希望显示看起来足够简单的图,但是我的加载向量在某些地方非常接近,并且它们的因子的标签往往会重叠。这就是 ggrepel 用来分隔标签的地方。我现在的困境是弄清楚
我尝试在 ggplot2 库中添加 ggrepel 来绘制图表: set.seed(42) ggplot(mtcars) + geom_point(aes(wt, mpg), size = 5,
ggrepel 提供了一系列出色的函数用于注释ggplot2 图形和the examples page包含许多关于如何扩展其功能的很好的提示,包括将生成的标签从绘图的轴、其他标签等移开。 但是,没有涉
我是一名优秀的程序员,十分优秀!