好的,我有一个包含2个变量X和Y的数据集,以及一个ID变量。我使用此代码创建了完整的图:
ggplot(data = X_Y) +
geom_point(mapping = aes(x = X, y = Y))+
geom_text_repel(mapping = aes(x = X, y = Y, label = ID))+
xlim(0,100)+
ylim(0,100)
我现在希望创建一些单独的图表,一次只显示一个带有标签的数据点。
现在我可以使用geom_label而不会击退并轻推标签以获得:
虽然这个情节还可以,但我想知道是否有任何方法可以保持连接标签的线条像ggrepel一样......
修改
从第一个建议开始,当我尝试使用仅仅选择一个案例的击退时,我得到以下情节:
ggplot(data = X_Y) +
geom_point(aes(x = X[4], y = Y[4]))+
geom_label_repel(aes(x = X[4], y = Y[4]),
label = "You are here",
min.segment.length = unit(0, 'lines'),
nudge_y = 6)+
labs(x = "X",y = "Y",title = "mytitle")+
scale_x_continuous(limits = c(0, 100)) +
scale_y_continuous(limits = c(0, 100))
分辨
想出来!我需要在ggplot()中指定我的数据只是X和Y变量,并限制为感兴趣的行。
像这样:
ggplot(data = X_Y[4,c(3,4)) +
geom_point(aes(x = X, y = Y))+
geom_label_repel(aes(x = X, y = Y),
label = "You are here",
min.segment.length = unit(0, 'lines'),
nudge_y = 6)+
labs(x = "X",y = "Y",title = "mytitle")+
scale_x_continuous(limits = c(0, 100)) +
scale_y_continuous(limits = c(0, 100))
答案 0 :(得分:1)
你当然可以使用geom_label_repel
,即使只有一个点。为确保绘制某个细分,请调整min.segment.length
arg。此arg设置从点到标签绘制线段的最小距离,将其设置为unit(0, 'lines')
可确保绘制每个线段:
library(ggplot2)
library(ggrepel)
ggplot(data.frame(x = 2, y = 3)) +
geom_point(aes(x, y)) +
geom_label_repel(aes(x, y),
label = 'You are here',
min.segment.length = unit(0, 'lines'),
nudge_y = .2) +
scale_x_continuous(limits = c(0, 3)) +
scale_y_continuous(limits = c(0, 4))