在 ggplot2 中,geom_text() 标签错位在我的数据点下方(如图所示)。如何将它们叠加到点上?

In ggplot2, geom_text() labels are misplaced below my data points (as pictured). How to overlay them onto points?

我正在使用 ggplot2 使用以下 R 代码创建 -1 到 +1 相关值的简单点图:

ggplot(dataframe, aes(x = exit)) + 
      geom_point(aes(y= row.names(dataframe))) + 
      geom_text(aes(y=exit, label=samplesize))

y 轴有文本标签,我相信这些文本标签可能是我的 geom_text() 数据点标签被压到图底部的原因,如下图所示:

如何更改我的绘图,使数据点标签显示在点本身上?

我了解到您希望样本量显示在绘图中每个数据点的上方。这是一个带有示例数据框的示例图: 编辑:根据 Gregor 的说明,在引用数据时更改了 geom_text() 调用以利用 aes()。感谢提醒!

top10_rank<-
      String Number
4       h      0
1       a      1
11      w      1
3       z      3
7       z      3
2       b      4
8       q      5
6       k      6
9       r      9
5       x     10
10      l     11

x<-ggplot(data=top10_rank, aes(x = Number, 
y = String)) + geom_point(size=3) +  scale_y_discrete(limits=top10_rank$String)

x + geom_text(data=top10_rank, size=5, color = 'blue', 
aes(x = Number,label = Number), hjust=0, vjust=0)

不确定这是否是您想要的。

你的问题只是你切换了 y 个变量:

# your code
ggplot(dataframe, aes(x = exit)) + 
      geom_point(aes(y = row.names(dataframe))) +  # here y is the row names
      geom_text(aes(y =exit, label = samplesize))  # here y is the exit column

由于您希望两者具有相同的 y 值,因此您可以在初始 ggplot() 调用中定义它,而不必担心以后会重复它

# working version
ggplot(dataframe, aes(x = exit, y = row.names(dataframe))) + 
      geom_point() + 
      geom_text(aes(label = samplesize))

使用行名有点脆弱,实际创建一个包含您想要的 y 值的数据列更安全、更可靠:

# nicer code
dataframe$y = row.names(dataframe)
ggplot(dataframe, aes(x = exit, y = y)) + 
      geom_point() + 
      geom_text(aes(label = samplesize))

完成此操作后,您可能不希望标签正好位于点的顶部,也许稍微偏移会更好:

# best of all?
ggplot(dataframe, aes(x = exit, y = y)) + 
      geom_point() + 
      geom_text(aes(x = exit + .05, label = samplesize), vjust = 0)

在最后一种情况下,您将不得不调整 x 美学,看起来合适的内容将取决于您最终情节的维度