在 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
美学,看起来合适的内容将取决于您最终情节的维度
我正在使用 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
美学,看起来合适的内容将取决于您最终情节的维度