我想在 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 命令时,图表的结果都会略有不同——有时抖动结果比其他时候要好。但是我还没有找到一种方法来系统地防止标签重叠。
对于如何清理文本的水平定位而无需手动移动单个项目的任何建议,我将不胜感激。我也很高兴听到有关如何改进这种类型的视觉表示的其他提示。