再次遇到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
这给了我这个:
但我想用传说中的名字
我刚刚删除了scale_shape_manual
中的labels=legendnames,
解决这个问题的问题是什么? 请帮忙
答案 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