猿问

如何在ggplot中创建宽度一致的图(带有图例)?

我要绘制几个不同的类别。这些是不同的类别,每个类别都有自己的标签集,但是在文档中将它们分组在一起是有意义的。下面给出了一些简单的堆叠条形图示例:


df <- data.frame(x=c("a", "b", "c"),

                 y=c("happy", "sad", "ambivalent about life"))

ggplot(df, aes(x=factor(0), fill=x)) + geom_bar()

ggplot(df, aes(x=factor(0), fill=y)) + geom_bar()

问题在于,使用不同的标签,图例具有不同的宽度,这意味着绘图具有不同的宽度,如果我制作表格或\subfigure元素,结果看起来会有些愚蠢。我怎样才能解决这个问题?


有没有一种方法可以显式设置绘图或图例的宽度(绝对或相对)?


阿晨1998
浏览 1512回答 3
3回答

蝴蝶不菲

该cowplot软件包还具有align_plots用于此目的的功能(输出未显示),both2 <- align_plots(p1, p2, align="hv", axis="tblr")p1x <- ggdraw(both2[[1]])p2x <- ggdraw(both2[[2]])save_plot("cow1.png", p1x)save_plot("cow2.png", p2x)并将plot_grid图保存到同一文件中。library(cowplot)both <- plot_grid(p1, p2, ncol=1, labels = c("A", "B"), align = "v")save_plot("cow.png", both)

侃侃无极

Arun建议将图例移至顶部或底部:ggplot(df, aes(x=factor(0), fill=x)) + geom_bar() + theme(legend.position = "bottom")ggplot(df, aes(x=factor(0), fill=y)) + geom_bar() + theme(legend.position = "bottom")在此处输入图片说明 在此处输入图片说明现在,这些图具有所需的相同宽度。此外,在两种情况下,绘图区域的大小均相等。如果有更多因素或更长的标签,则可能需要使用图例,例如,在两行或更多行中显示图例。theme()并guide_legend()有几个参数可控制图例在ggplot2。
随时随地看视频慕课网APP
我要回答