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图形上线条的动态形状和大小变化创建第二个图例[重复]的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2 - 在大小图例中显示多个键(形状)

《ggplot2:数据分析与图形艺术》笔记

Tidyverse自学笔记-ggplot2标度之坐标轴设置

难以获得混合线a和指向ggplot2中颜色和形状的点图例

R数据可视化第二弹---ggplot2工具箱

CorelDRAW中的涂抹笔刷工具怎么用