36

我想在 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 命令时,图表的结果都会略有不同——有时抖动结果比其他时候要好。但是我还没有找到一种方法来系统地防止标签重叠。

对于如何清理文本的水平定位而无需手动移动单个项目的任何建议,我将不胜感激。我也很高兴听到有关如何改进这种类型的视觉表示的其他提示。

4

1 回答 1

6

看看FField包装

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

(来自这篇文章https://stats.stackexchange.com/a/62856

于 2014-11-18T18:54:24.067 回答