摆脱ggplot2

时间:2015-07-21 14:35:45

标签: r

再次遇到ggplot2的问题

我想绘制至少两个具有两种不同颜色和两种不同形状的数据集。 这样可行,但是当我尝试为图例添加名称时,它会自动将图例加倍。 数据集的数量可以改变,当然也可以改变传奇名称。 我需要一个不仅适用于此示例的代码:

library(ggplot2)
xdata=1:5
ydata=c(3.45,4.67,7.8,8.98,10)
ydata2=c(12.4,13.5,14.6,15.8,16)

p <-data.frame(matrix(NA,nrow=5,ncol=3))

p$X1 <- xdata
p$X2 <- ydata
p$X3 <- ydata2


shps <-c(1,2)
colp <-c("navy","red3")

p <- melt(p,id="X1")

px <-ggplot(p,aes(X1,value))

legendnames <- c("name1","name2")

px <- px +aes(shape = factor(variable))+
geom_point(aes(colour =factor(variable)))+
theme_bw()+
scale_shape_manual(labels=legendnames,values =shps )+
scale_color_manual(values = colp)
px

这给了我这个:

enter image description here

但我想用传说中的名字

enter image description here

我刚刚删除了scale_shape_manual

中的labels=legendnames,

解决这个问题的问题是什么? 请帮忙

2 个答案:

答案 0 :(得分:3)

我认为这只是向labels提供相同scale_color_manual参数的问题,否则它不知道如何将这些图例合并在一起。

所以

px <- px + aes(shape = factor(variable)) +
   geom_point(aes(colour = factor(variable))) +
   theme_bw()+
   scale_shape_manual(labels=legendnames, values = shps)+
   scale_color_manual(labels=legendnames, values = colp)
px

答案 1 :(得分:0)

这不是一个真正的问题,你通过使用传奇名称(然后它添加,即使这些变量不在你的数据上)自己编程。如果删除它们,则绘图的行为符合您的要求:

shps <-c(X2=1,X3=2)
colp <-c(X2="navy",X3="red3")
#easy if you want to rerun code, don't overwrite variables
p2 <- melt(p,id="X1")




px <- ggplot(data=p2) + geom_point(aes(x=X1, y=value,shape=variable,colour=variable)) +
  scale_shape_manual(values=shps)+
  scale_color_manual(values=colp)
px

enter image description here