如何抖动的文本,以避免在GGPLOT2散点图重叠?(How to jitter text to av

2019-06-25 18:22发布

我想创造一个干净版本的文字标签的GGPLOT2散点图的。 我们的目标是在视觉上代表了约25个项目相关的增加值。 我已经使用“position_jitter,”但我不知道如果我可以做的更好。

下面是一些模拟数据:

title <- rep("A Really Rather Long Text Label", 25)
value <- runif(25, 1,10)
spacing <- seq(1:25)
df <- data.frame(title, value, spacing, stringsAsFactors = FALSE)

这里是生成图表的代码:

library(ggplot2)
myplot <- ggplot(data=df, aes(x=spacing, y=value, label = title)) +
geom_text(aes(colour = value),
    size = 2.5, fontface = "bold",
    vjust = 0,
    position = position_jitter(width=5, height=0)) +
theme_bw() +
scale_x_continuous(limits = c(-5, 30))+
scale_colour_gradient(low = "#6BAED6", high = "#08306B") +
theme(axis.title.x = element_blank(),
      axis.ticks = element_blank(),
      axis.text.x = element_blank(),
      legend.position = "none")
myplot

有足够的空间,这一切文本的合理大小的图形 - 只要文本是免费的,因为它需要水平,以尽量转移! 我不想上下抖动,因为是为了显示与每个文本标签相关的y值。

该图出来略有不同每次运行ggplot命令时间 - 有时抖动结果比其他倍。 但我还没有找到一种方法来系统地防止标签重叠。

我是如何收拾文本的水平定位的任何建议感激,而无需手动移动单个项目。 我也很乐意听到关于如何提高这种类型的可视化表示的其他提示。

Answer 1:

看一看在FField

install.packages("FField", type = "source")
install.packages("ggplot2")
install.packages("gridExtra")
library(FField)
FFieldPtRepDemo()

(从这个职位https://stats.stackexchange.com/a/62856 )



文章来源: How to jitter text to avoid overlap in a ggplot2 scatterplot?