我想改变两条线上点的形状和大小,我可以这样做,但会出现第二个图例。
运行此代码时,您会看到2个图例。我只想要“变量”传奇。
library("ggplot2")
MyData<-data.frame(time= c(1,2,3,1,2,3), value = c(.4,.6,.7,.1,.2,.3), variable = c("company a","company a","company a","company b","company b","company b") )
MyData$pointsize <- ifelse(MyData$time==2, 5, 1)
MyData$shape <- ifelse(MyData$time==2, 4, 7)
MyData
ggplot(MyData, aes( x = time, y=value,colour=variable, group= variable) ) + geom_line() + geom_point(aes(shape = MyData$pointsize,size = MyData$pointsize) )+
scale_shape_identity()
如何删除Mydata $ PointSize的图例?
谢谢!
答案 0 :(得分:1)
您可以在guide=FALSE
内设置scale_size_continuous()
以删除此图例。
+scale_size_continuous(guide=FALSE)
答案 1 :(得分:0)
看起来答案是: ........ + scale_shape_identity(指南=&#34;无&#34;)+ scale_size_identity(指南=&#34;无&#34;)
答案 2 :(得分:0)
您可以使用guides
选项。使用显示为图例的美学作为参数,并将其设置为FALSE
。
guides(colour=FALSE)
会移除一个图例,guides(size=FALSE)
另一个图例,guides(colour=FALSE, size=FALSE)
会删除这两个图例。
library("ggplot2")
MyData<-data.frame(time=c(1,2,3,1,2,3),
value=c(.4,.6,.7,.1,.2,.3),
variable=c("company a","company a","company a","company b","company b","company b"))
MyData$pointsize <- ifelse(MyData$time==2, 5, 1)
MyData$shape <- ifelse(MyData$time==2, 4, 7)
MyData
ggplot(MyData, aes(x=time, y=value,colour=variable, group=variable)) +
geom_line() +
geom_point(aes(shape=MyData$pointsize, size=MyData$pointsize)) +
scale_shape_identity() +
guides(colour=FALSE, size=FALSE)
注意:以下是一个陈旧的答案,仅涉及两者之间修改的初始问题!它不再适用于上述问题...... 由于映射(美学),你有两个组,因此所有&#34;时间&#34;,&#34;形状&#34;和&#34;指向&#34;值出现两次(每组一次)。因此,每组(线)有3个值。但是,您为geom_point提供了6个值,因为您没有指定美学。使用aes的绘图和用于geom_point的数据的数据映射具有不同的长度。解决方案是:
ggplot(MyData, aes(x=time, y=value, colour=variable, group=variable))+geom_line()+ geom_point(aes(shape=factor(shape), size=pointsize))