ggplot图形上线条的动态形状和大小变化创建第二个图例[重复]
Posted
技术标签:
【中文标题】ggplot图形上线条的动态形状和大小变化创建第二个图例[重复]【英文标题】:ggplot Dynamic Shape and Size change of lines on graph Creates Second Legend [duplicate] 【发布时间】:2014-05-24 12:27:05 【问题描述】:我想更改 2 条线上的点的形状和大小,我可以这样做,但会出现第二个图例。
当您运行此代码时,您将看到 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 的图例?
谢谢!
【问题讨论】:
除了下面的答案,你应该知道你真的不应该在aes
中指定像Mydata$PointSize
这样的列。您应该只映射到列名pointsize
。
【参考方案1】:
您可以在scale_size_continuous()
中设置guide=FALSE
以删除此图例。
+scale_size_continuous(guide=FALSE)
【讨论】:
【参考方案2】:看起来答案是: ........ + scale_shape_identity(guide="none")+scale_size_identity(guide="none")
【讨论】:
如果您使用的是scale_size_identity()
,则不需要参数guide="none"
,因为它是默认值。此外,仅当应按原样直接使用值时才使用身份标度。【参考方案3】:
您可以使用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)
注意:以下是旧答案,仅指中间修改过的初始问题!它不再适用于上述问题... 由于映射(美学),您有两个组,因此所有“时间”、“形状”和“点大小”值出现两次(每组一次)。因此,每个组(行)都有 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))
【讨论】:
你是对的 - 我不确定我是否还在正确的线程中,我想我读过一些关于“错误长度美学”的东西...... 如果这些是修订版:***.com/posts/22994121/revisions 我的回答是指最初的问题...以上是关于ggplot图形上线条的动态形状和大小变化创建第二个图例[重复]的主要内容,如果未能解决你的问题,请参考以下文章