如何在 ggplot 而不是 geom 中显示值

How to show values in ggplot instead of geom

我有一个如下所示的数据集:

cluster <- c(rep(c(1:4), 2))
score <- c(1.3, 7.2, 4.9, 7.5, 6.8, 4.1, 9.9, 5.8)
x_axis <- c(rep("indicator1", 4), rep("indicator2", 4))

dt <- data.table(cluster, score, x_axis)

我正在按集群绘制每个指标的分数:

ggplot() +
  geom_point(data=dt, aes(x=x_axis, y=score))

我想执行以下操作之一:

  1. 用聚类编号替换图中的点(或将数字放在点旁边),或
  2. 对每个聚类使用不同的 shapes/color 并在图下方添加图例,指示每个形状对应于哪个聚类。

我该怎么做?

这是两个选项。要为簇使用形状,请将 factor(cluster) 传递给 geom_pointshape 美学。

ggplot(dt, aes(x_axis, score)) +
  geom_point(aes(shape = factor(cluster)), size = 4) +
  theme_bw(base_size = 16) +
  labs(shape = 'Cluster')

如果您只想在每个点上添加标签,则不需要美观的形状,但您可能希望在文本后面绘制一些白色圆圈:

ggplot(dt, aes(x_axis, score)) +
  geom_point(size = 8, shape = 21, fill = 'white') +
  geom_text(aes(label = cluster), size = 5) +
  theme_bw(base_size = 16)

如果您正在写入允许颜色的格式,我认为标记簇的最清晰方法是将它们映射到 color 美学:

ggplot(dt, aes(x_axis, score)) +
  geom_point(aes(color = factor(cluster)), size = 8) +
  theme_bw(base_size = 16) +
  scale_color_brewer(palette = 'Set1') +
  labs(color = 'Cluster')