首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何消除牛仔故事中传奇人物之间的差距

如何消除牛仔故事中传奇人物之间的差距
EN

Stack Overflow用户
提问于 2020-06-22 09:25:47
回答 1查看 227关注 0票数 1

排列多个图例是R.绘制图幅时常见的问题。theme()函数在ggplot2软件包中允许在水平或垂直方向上排列多个图例。然而,在某些情况下,有些传说是长的,而另一些是短的。它倾向于将短传奇叠加在一行或一列中,而将长传奇留在另一行或一列中。theme()函数中仅有的两种选择“水平”或“垂直”是不令人满意的。

另一种方法是通过get_legend()函数在牛仔包中从绘图中提取图解。然而,在由plot_grid()函数安排之后,传奇之间的边距不能消除。我怎样才能消除传说之间的空白(灰色地带)?

可复制的例子如下:

代码语言:javascript
复制
p1 <- ggplot(mtcars) +
  geom_bar(aes(x=as.factor(am), fill=as.factor(am))) +
  theme(legend.margin = margin(0,unit="pt"))
p2 <- ggplot(mtcars) +
  geom_bar(aes(x=as.factor(vs), fill=as.factor(vs))) +
  theme(legend.margin = margin(0,unit="pt"))
p3 <- ggplot(mtcars) +
  geom_bar(aes(x=as.factor(carb),fill=as.factor(carb))) +
  scale_fill_manual(breaks = c(1,2,3,4,5,6,7,8),values = c('#f7fcfd','#e5f5f9','#ccece6','#99d8c9','#66c2a4','#41ae76','#238b45','#005824'))+
  theme(legend.margin = margin(0,unit="pt"))
leg1 <- get_legend(p1+theme(legend.background = element_rect(fill="white")))
leg2 <- get_legend(p2+theme(legend.background = element_rect(fill="white")))
leg3 <- get_legend(p3+theme(legend.background = element_rect(fill = "white")))
leg12 <- plot_grid(leg1,leg2,nrow=2)+theme(plot.background = element_rect(fill="grey"))
leg123 <- plot_grid(leg3,leg12,nrow = 1)+theme(plot.background = element_rect(fill="grey"))
ggdraw(leg123)

我想要的是这样的:

EN

回答 1

Stack Overflow用户

发布于 2020-06-22 14:22:58

ggplot2和任何其他使用图形设备的R应用程序的输出与图形窗口的分辨率和大小直接相关。基本上,文本和其他绘制层之间的缩放是不同的,这意味着如果更改窗口的大小,输出就会发生变化。如果我接受您的代码,您可以通过将不同的width=height=参数发送到ggsave()来看到效果

代码语言:javascript
复制
# kind of the default output for me
ggsave('a0.png', width=8, height=5)

代码语言:javascript
复制
# this gets you something like what you wanted
ggsave('a.png', width=3, height=2)

如果你把这个和阴谋放在一起..。使用同样的一般想法,你应该能够得到一些有用的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62511261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档