为ggplot中的形状定义(不使用默认值)

时间:2014-11-05 03:27:56

标签: r ggplot2 shapes

我正在尝试制作一个有三种形状的散点图(小圆圈,大圆圈和十字形)。

我能够达到我几乎想要的地步,除了我无法弄清楚如何指定形状:

AData=as.data.frame(cbind(x=rnorm(5, 10, 1),y=rnorm(5,10,1)))
AData["Type"] = rep(1,dim(AData)[1])
BData=as.data.frame(cbind(x=rnorm(5, 20, 1),y=rnorm(5,20,1)))
BData["Type"] = rep(2,dim(BData)[1])
CData=as.data.frame(t(c(0,0,3)))
colnames(AData) = c("Ankle.dif", "Knee.dif", "Type")
colnames(BData) = c("Ankle.dif", "Knee.dif", "Type")
colnames(CData) = c("Ankle.dif", "Knee.dif", "Type")
dataFramePlot = rbind(AData, BData, CData)
ggplot(dataFramePlot, aes(x=Ankle.dif, y=Knee.dif)) + geom_point(aes(shape = factor(Type)))

我在这里得到一个圆圈,三角形和正方形,但我更喜欢为这三种类型指定一个小圆圈,一个大圆圈和一个横杆。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

以下是使用scale_shape_manual的一种方法。对于形状,您可以在许多地方找到更多信息。这是link给你的。正如下面评论中要求的OP,我修改了图例。

ggplot(dataFramePlot, aes(x=Ankle.dif, y=Knee.dif)) +
geom_point(aes(shape = factor(Type)))+
scale_shape_manual(name = "Data",
                   values=c(20, 19, 3),
                   breaks=c("1", "2", "3"),
                   labels=c("First data", "Second data", "Third data"))

enter image description here