使用 ggplot2 的统计和权重的叠加图
Supperposed plot of a statistic and weight using ggplo2
我想创建一个图表来显示特定统计数据以及与我的图形的每个 bin 关联的权重。由于在 ggplot2
中不建议创建双 y 轴图,因此我听从了建议并将两个图堆叠在一起。以下是我所做的最小可重现示例:
library(data.table)
library(ggplot2)
library(gridExtra)
set.seed(1L)
data <- data.table(x=1:10, y=10000+1000*runif(10), weight=runif(10))
plot_stat <- ggplot(data) +
geom_line(aes(x, y), stat="identity") +
theme_classic() +
theme(axis.text.x=element_blank(), axis.ticks.x=element_blank(),
axis.title.x=element_blank(), axis.line.x=element_blank())
plot_weight <- ggplot(data) +
theme_classic() +
geom_bar(aes(x, weight), stat="identity")
grid.arrange(plot_stat, plot_weight, nrow = 2, heights = c(0.7, 0.3))
输出如下:
我的问题是,轴标签的保留 space 对于两个图表来说都不相同。无论轴标签是什么,我都希望轴线完全对齐。
这是我想要的结果(手动编辑):
有办法吗?
谢谢!
您想使用图书馆 cowplot
。 . .
library(cowplot)
plot_grid(plot_stat, plot_weight, ncol = 1, align = "v")
需要注意的一件事是 cowplot
会更改您的默认 ggplot 主题,因此要将其改回,请执行以下操作:theme_set(theme_gray())
.
我想创建一个图表来显示特定统计数据以及与我的图形的每个 bin 关联的权重。由于在 ggplot2
中不建议创建双 y 轴图,因此我听从了建议并将两个图堆叠在一起。以下是我所做的最小可重现示例:
library(data.table)
library(ggplot2)
library(gridExtra)
set.seed(1L)
data <- data.table(x=1:10, y=10000+1000*runif(10), weight=runif(10))
plot_stat <- ggplot(data) +
geom_line(aes(x, y), stat="identity") +
theme_classic() +
theme(axis.text.x=element_blank(), axis.ticks.x=element_blank(),
axis.title.x=element_blank(), axis.line.x=element_blank())
plot_weight <- ggplot(data) +
theme_classic() +
geom_bar(aes(x, weight), stat="identity")
grid.arrange(plot_stat, plot_weight, nrow = 2, heights = c(0.7, 0.3))
输出如下:
我的问题是,轴标签的保留 space 对于两个图表来说都不相同。无论轴标签是什么,我都希望轴线完全对齐。
这是我想要的结果(手动编辑):
有办法吗?
谢谢!
您想使用图书馆 cowplot
。 . .
library(cowplot)
plot_grid(plot_stat, plot_weight, ncol = 1, align = "v")
需要注意的一件事是 cowplot
会更改您的默认 ggplot 主题,因此要将其改回,请执行以下操作:theme_set(theme_gray())
.