一个图中两个图例之间的间隙较小(例如颜色和大小比例)
Posted
技术标签:
【中文标题】一个图中两个图例之间的间隙较小(例如颜色和大小比例)【英文标题】:Smaller gap between two legends in one plot (e.g. color and size scale) 【发布时间】:2012-12-15 18:00:00 【问题描述】:如何在一个情节中减少两个指南之间的差距。在下面的示例中,两个指南来自颜色和大小比例,我想更改两者之间的差距,以便标题“大小”正好低于 1 的图例点。设计方面,它可能不会在这个例子中有意义,但在我的实际应用中确实如此。
df=data.frame(x=rnorm(100),y=rnorm(100),color=factor(rbinom(100,1,0.5)),size=runif(100))
ggplot(df,aes(x=x,y=y,color=color,size=size)) + geom_point()
编辑:这是情节。我想让绿线和箭头突出显示的间隙变小。
【问题讨论】:
您是在谈论 lattice 和 ggplot 术语中的“尺度”,还是指“图例”? 我说的是左侧图例中名为“颜色”和“大小”的图例。我想搬到两个更近的地方。 您更好地定义了问题,但可能重复? :/ ***.com/questions/11366964/… @AnthonyDamico 不,它不是重复的。 @Anthony,我认为您的链接线程是关于图例键之间的间距(示例中0' and
1' 颜色图例的键)。我的问题是关于两个图例之间的间距,如绿色箭头所示。
【参考方案1】:
我尝试自定义legend
或guide
参数但我找不到解决方案。我希望使用 ggplot2 设置提供解决方案。
这里有 2 个基于 gtable
和 grid
软件包的解决方案。
对于gtable
解决方案,代码的灵感来自question。
library(gtable)
# Data transformation
data <- ggplot_build(p)
gtable <- ggplot_gtable(data)
# Determining index of legends table
lbox <- which(sapply(gtable$grobs, paste) == "gtable[guide-box]")
# changing the space between the 2 legends: here -0.5 lines
guide <- gtable$grobs[[lbox]]
gtable$grobs[[lbox]]$heights <- unit.c(guide$heights[1:2],
unit(-.5,'lines'), ## you can the GAP here
guide$heights[4:5])
# Plotting
grid.draw(gtable)
类似使用grid
包(我们在图例的视口中重绘)
pp <- grid.get('guide',grep=T)
depth <- downViewport(pp$wrapvp$name)
guide <- grid.get('guide',grep=T)
grid.rect(gp=gpar(fill='white'))
guide$heights <- unit.c(guide$heights[1:2],unit(-0.2,'lines'),guide$heights[4],unit(0.1,'lines'))
grid.draw(guide)
upViewport(depth)
【讨论】:
谢谢,我知道。我的问题是是否可以选择将尺寸和色标的两个指南/两个图例靠得更近。 @user1318686 如果您在答案中附加一张图片以显示您的最终输出结果会怎样? 完成。我想让绿线和箭头突出显示的间隙变小。 我仍然看不到两个传说之间的小差距。你错过了什么吗? 谢谢!这似乎是扩大差距的好方法,但我不知道如何使用它来缩小差距。【参考方案2】:现在似乎可以使用主题参数:
ggplot(df,aes(x=x,y=y,color=color,size=size)) + geom_point() +
theme(legend.spacing.y = unit(-0.5, "cm"))
您也可以尝试减少图例的边距:
legend.margin = margin(-0.5,0,0,0, unit="cm")
或更老
legend.margin=unit(0, "cm")
【讨论】:
以上是关于一个图中两个图例之间的间隙较小(例如颜色和大小比例)的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化自定义多个图例(legend)标签之间的距离实战(例如,改变数据点颜色和数据点大小图例之间的距离)
在带有子图的 geopandas 图中添加图例会改变图的大小