1

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

在此处输入图像描述

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

4

2 回答 2

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)

带标签的数据图

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

于 2015-07-10T23:45:45.390 回答
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审美,看起来正确的取决于你最终情节的尺寸

于 2015-07-11T19:36:41.317 回答