geom_point如何使用geom_text从两个不同的数据集中分配值

时间:2019-02-04 15:20:17

标签: r ggplot2 label geom-text

我正在尝试从一张图中的两个不同数据集中绘制点。我想用geom_text添加点的“值”,但这不起作用。

我无法向您显示数据集,但是数据集 p1 p2 都有3列数字。

我想绘制第2列的第3列功能(数据集2中的点以红色表示,数据集1中的点以蓝色表示)。并添加第1列作为标签

ggplot()+geom_point(size=8,col="red",aes(x=p2[,3],y=p2[,2]/sum(p2[,2])))+
   geom_text(label=p2[,1])+ylab("frequence")+
     geom_point(size=8,col="blue",aes(x=p1[,3],y=p1[,2]/sum(p1[,2])))+
    geom_text(label=p1[,1])

用蓝色和红色分别绘制我想要的点,但没有标签。

我可以使用2个数据集打印标签

ggplot(p2,aes(x=p2[,3],y=p2[,2]/sum(p2[,2])))+geom_text(label=p2[,1])+ylab("frequence")+ geom_point(size=8,col="red",alpha=0.2)+
geom_point(size=8,col="blue",alpha=0.2,aes(x=p1[,3],y=p1[,2]/sum(p1[,2])))+geom_text(label=p1[,1])


这里的问题是两个标签都印在我的红点上

感谢您的时间

1 个答案:

答案 0 :(得分:1)

在使用2个数据集时,应在每个geom function中使用参数data =指定正确的数据集。

library(ggplot)

p1 <- data.frame(c1 = rnorm(10), c2 = rnorm(10), c3 = rnorm(10))
p2 <- data.frame(c1 = rnorm(10), c2 = rnorm(10), c3 = rnorm(10))

ggplot() +
  geom_point(aes(x = c3, y = c2 / sum(c2)), col = "red", data = p2) +
  geom_text(aes(x = c3, y = c2 / sum(c2), label = round(c1, 2)), data = p2) +
  geom_point(aes(x = c3, y = c2 / sum(c2)), col = "blue", data = p1) +
  geom_text(aes(x = c3, y = c2 / sum(c2), label = round(c1, 2)), data = p1)

enter image description here