ggplot图表上线条的动态形状和大小更改创建第二个图例

时间:2014-04-10 16:46:16

标签: r ggplot2

我想改变两条线上点的形状和大小,我可以这样做,但会出现第二个图例。

运行此代码时,您会看到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的图例?

谢谢!

3 个答案:

答案 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))