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

时间:2015-07-10 22:57:09

标签: r ggplot2 geom-text

我使用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()数据点标签被压缩到情节底部的原因,如下图所示:

enter image description here

如何更改绘图以使数据点标签出现在点上?

2 个答案:

答案 0 :(得分:2)

据我所知,您希望样本大小显示在图中的每个数据点上方。下面是一个示例图,其中包含一个示例数据框: 编辑: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)

Plot of Data with labels

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

答案 1 :(得分:1)

您的问题只是您切换了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美学的调整,看起来正确将取决于您最终情节的尺寸