r - 两个带有和不带有图例的图,具有相同的内部图大小
问题描述
我有两个情节,一个有传说,另一个没有。图例应该在右边。现在我想要两个 jpg 文件,并且“内部”图(除了图例之外的所有内容)在两个图中都应该具有相同的大小。我想用指定图例宽度legend.key.width
并将该宽度添加到width
ggsave 中的参数。这里是 2 英寸。
那是我的代码:
library(tidyverse)
tb <- tibble(a = 1:10, b = 10:1, c = rep(letters[1:2], 5))
plot1 <-
ggplot(tb, aes(a, b)) +
geom_point()
plot1
plot2 <-
ggplot(tb, aes(a, b, colour = c)) +
geom_point() +
theme(legend.key.width = unit(2, "in"))
plot3
ggsave("plot1.jpg", plot1, width = 5, height = 5, units = "in")
ggsave("plot2.jpg", plot2, width = 7, height = 5, units = "in")
不幸的是,in 的内部情节plot2
仍然没有 .in 的内部情节那么宽plot1
。我真正想要的是两个看起来完全一样的图(除了颜色),我可以“把一个放在另一个上面,似乎有一个图”,但plot2
应该另外有这个图例。有机会吗?我已经尝试了很多,并查看了theme
. 我很抱歉我的奇怪解释......
解决方案
据我所知,类似于@MrGumble 提出的选项,您可以使用 eg 将图相互粘合在一起patchwork
。如果您更喜欢单独的图,那么一个选项是使用图例制作第一个图,但使用和color
使所有文本、颜色等不scale_color_manual
可见。guide_legend
theme
1. 单独的地块
library(tidyverse)
tb <- tibble(a = 1:10, b = 10:1, c = rep(letters[1:2], 5))
plot1 <-
ggplot(tb, aes(a, b, colour = c)) +
geom_point() +
labs(color = "") +
scale_color_manual(values = rep("black", length(unique(tb$c)))) +
guides(color = guide_legend(override.aes = list(color = NA))) +
theme(legend.key = element_rect(fill = NA), legend.text = element_text(color = NA))
plot1
plot2 <-
ggplot(tb, aes(a, b, colour = c)) +
geom_point()
plot2
2.使用patchwork
:
library(patchwork)
plot1 <- ggplot(tb, aes(a, b)) +
geom_point()
plot1 / plot2
推荐阅读
- python - PyQt5 QMainWindow 不显示中央小部件
- flutter - 单击时我将如何阻止构建按钮更改其状态谢谢
- javascript - xState 中的模型输入(文本字段)状态机
- python - 在python上实现一个永无止境的矩阵公式进行曲线拟合
- python - Python boto3分段上传视频到aws s3
- c - printf 没有给我正确的输出,也许 scanf 是罪魁祸首,请指教
- javascript - 显示日期分为日 - 月 - 年和组合
- html - 如何在引导面板右侧添加按钮
- typescript - strictFunctionTypes 限制泛型类型
- php - 重力形式 - 如何在标签元素内移动无线电输入