如何在R中使用ggplot在设定坐标处放置标签?
我试图在ggplot中手动设置如何在R中使用ggplot在设定坐标处放置标签?,r,ggplot2,R,Ggplot2,我试图在ggplot中手动设置geom_标签的坐标。问题是我的图是一个圆(不是以零为中心)…我试图找出一种方法来“扩展”标签的x&y位置,所以它们被推出。。。希望下面的例子能解释我的意思 旁白:有一个类似的答案。。。哪一个有用。。。但是我不太确定这个答案的代码中到底发生了什么。我希望找到一个相对简单的解决方案。这是我的问题 如果我有一个如下所示的数据帧: df <- data.frame( x = c(5.000000e-01, 8.090170e-01, 1.000000e+00,
geom_标签的坐标。问题是我的图是一个圆(不是以零为中心)…我试图找出一种方法来“扩展”标签的x&y位置,所以它们被推出。。。希望下面的例子能解释我的意思
旁白:有一个类似的答案。。。哪一个有用。。。但是我不太确定这个答案的代码中到底发生了什么。我希望找到一个相对简单的解决方案。这是我的问题
如果我有一个如下所示的数据帧:
df <- data.frame(
x = c(5.000000e-01, 8.090170e-01, 1.000000e+00, 1.000000e+00, 8.090170e-01,
5.000000e-01, 1.909830e-01, 5.836788e-17, 0.000000e+00, 1.909830e-01),
y = c(1.0000000, 0.9045085, 0.6545085, 0.3454915, 0.0954915,
0.0000000, 0.0954915, 0.3454915, 0.6545085, 0.9045085)
)
labels <- paste0("A", 1:10)
然而,上面的代码是错误的。。。因为,目前,LmatX
和LmatY
中的零值被一减去(而它们应该保持零!)。
我的想法是,我可以使用通过LmatX
和LmatY
获得的值,并将其与原始df$x
和df$y
相乘(或添加…不确定哪个)以创建一组新的坐标来放置标签
关于如何实现这一点,有什么建议吗?我想出了解决这个问题的办法。根据我在问题中提出的方法。。。我第一次在-1和1之间缩放(我在问题中缩放不正确)
然后我用标签的坐标创建了一个新的数据框:
df_2 <- data.frame(newX, newY)
其结果是:
LmatX <- (-1 - 1) * ((df$x - min(df$x)) / (max(df$x) - min(df$x))) +1
LmatY <- (-1 - 1) * ((df$y - min(df$y)) / (max(df$y) - min(df$y))) +1
LmatX <- ifelse(LmatX > 0, LmatX + 1, LmatX - 1)
LmatY <- ifelse(LmatY > 0, LmatY + 1, LmatY - 1)
LmatX <- (1 - -1) * ((df$x - min(df$x)) / (max(df$x) - min(df$x))) + -1
LmatY <- (1 - -1) * ((df$y - min(df$y)) / (max(df$y) - min(df$y))) + -1
newX <- ifelse(LmatX > 0, df$x + 0.05, ifelse(LmatX < 0, df$x - 0.05, df$x))
newY <- ifelse(LmatY > 0, df$y + 0.05, ifelse(LmatY < 0, df$y - 0.05, df$y))
df_2 <- data.frame(newX, newY)
p <- ggplot(df, aes(x, y)) +
geom_point() +
geom_label(data = df_2, aes(x = newX, y = newY, label = labels)) +
theme_void()
p