Facet_grid 所有面板都带有 free_y
Facet_grid with all panels with a free_y
我有一个 6x6 的网格(站点在侧面,年份在顶部),随时间 (x) 显示丰度 (y)。
我已经使用 facet_grid
构建情节,使用 free_y
。这绘制了一个图形,每一行都有一个共享的 y 轴。我需要为所有面板单独设置 free_y
,我知道 facet_grid
不允许这样做,而 facet_wrap
允许。我想使用 facet_grid
因为它保持面板的顺序,每年有列,每个站点有行。
我试过使用 lemon
包和 facet_rep_grid
函数,但这没有用。有谁知道我如何 free_y
分别跨越所有面板?
谢谢
一个建议是使用 ggh4x::facet_grid2()
设置独立的 y 尺度。 (免责声明:我是 ggh4x 的作者)。以下标准数据集示例:
library(ggplot2)
ggplot(mpg, aes(displ, hwy, colour = as.factor(cyl))) +
geom_point() +
ggh4x::facet_grid2(vars(year), vars(drv),
scales = "free_y", independent = "y")
由 reprex package (v0.3.0)
创建于 2022-03-11
另一种解决方案是 lemon
包中的 facet_rep_grid
。
示例代码:
#install.packages("lemon")
library(lemon)
library(ggplot2)
ggplot(df)+
geom_line(aes(x=time, y=abundance, color=sites))+
lemon::facet_rep_grid(year~sites,
scales="free",
repeat.tick.labels = "all")+
theme(panel.background = element_blank(),
axis.line = element_line(size=0.5))+
labs(x="Time", y="Abundance", fill="Sites")+
theme_minimal()
剧情:
我有一个 6x6 的网格(站点在侧面,年份在顶部),随时间 (x) 显示丰度 (y)。
我已经使用 facet_grid
构建情节,使用 free_y
。这绘制了一个图形,每一行都有一个共享的 y 轴。我需要为所有面板单独设置 free_y
,我知道 facet_grid
不允许这样做,而 facet_wrap
允许。我想使用 facet_grid
因为它保持面板的顺序,每年有列,每个站点有行。
我试过使用 lemon
包和 facet_rep_grid
函数,但这没有用。有谁知道我如何 free_y
分别跨越所有面板?
谢谢
一个建议是使用 ggh4x::facet_grid2()
设置独立的 y 尺度。 (免责声明:我是 ggh4x 的作者)。以下标准数据集示例:
library(ggplot2)
ggplot(mpg, aes(displ, hwy, colour = as.factor(cyl))) +
geom_point() +
ggh4x::facet_grid2(vars(year), vars(drv),
scales = "free_y", independent = "y")
由 reprex package (v0.3.0)
创建于 2022-03-11另一种解决方案是 lemon
包中的 facet_rep_grid
。
示例代码:
#install.packages("lemon")
library(lemon)
library(ggplot2)
ggplot(df)+
geom_line(aes(x=time, y=abundance, color=sites))+
lemon::facet_rep_grid(year~sites,
scales="free",
repeat.tick.labels = "all")+
theme(panel.background = element_blank(),
axis.line = element_line(size=0.5))+
labs(x="Time", y="Abundance", fill="Sites")+
theme_minimal()
剧情: