gpt4 book ai didi

r - 将条形面板放置在地 block 的相对两侧

转载 作者:行者123 更新时间:2023-12-01 13:11:34 24 4
gpt4 key购买 nike

一些期刊要求包含多张图表的图表在每个图表上标上字母。我正在尝试对 ggplot2 中的 facet_wrap 做同样的事情,因为我组织数据的方式是,所有解释变量的协变量都在一列中,而协变量的分组变量在另一列中。

我按照说明操作 here给出每个图的 x 轴标签不同的效果(当它真的是一个面板时)。

但我仍然需要为图中的每个绘图(列 figure.letters)添加标签,最好在左上角。我试图将它添加到 facet_wrap 公式中,所以现在每个图都有两个条形面板。

require(ggplot2)
my.df <- data.frame(
param = rep(c('Distance (km)', 'Energy (j)', 'Girth (m)', 'Height (cm)', 'Incline (degrees)'), each = 20),
explanatory = rnorm(100, 0, 1),
response = rnorm(100, 0, 1),
figure.letter = rep(LETTERS[1:5], each = 20)
)

ggplot(my.df, aes(x = explanatory, y = response)) +
geom_point() +
facet_wrap(. ~ param + figure.letter, strip.position = 'bottom') +
theme_bw() +
theme(
strip.placement = 'bottom',
strip.background = element_blank()
)

enter image description here

有很多非常好的答案here ,但它们更适合将条形面板移动到顶部,然后将面板文本左对齐。所有。我希望将两个条形面板分开,以便数字字母面板位于顶部并左对齐,而 param 条形面板保留在底部。

我也希望避免为多个绘图编写代码,然后使用 patchwork 来获取图形标签。

有没有办法将 figure.letter 的条形面板移动到顶部,同时将 param 的条形面板保持在底部?

最佳答案

如果您在 coord_cartesian() 中关闭裁剪并对所有面使用相同的固定轴限制,则可以使用 geom_text() 将标签放置在绘图区域之外。

如果您对不同的面有不同的轴限制,那么拼凑路线可能是您唯一的选择。

require(ggplot2)
#> Loading required package: ggplot2

set.seed(1234)
my.df <- data.frame(
param = rep(c('Distance (km)', 'Energy (j)', 'Girth (m)', 'Height (cm)', 'Incline (degrees)'), each = 20),
explanatory = rnorm(100, 0, 1),
response = rnorm(100, 0, 1)
)

df.label <- data.frame(
param = unique(my.df$param),
x = -2.8,
y = 3.6,
figure.letter = LETTERS[1:5]
)

ggplot(my.df, aes(x = explanatory, y = response)) +
geom_point() +
geom_text(
data = df.label, aes(x = x, y = y, label = figure.letter),
hjust = 0, vjust = 0
) +
facet_wrap(. ~ param, strip.position = 'bottom') +
coord_cartesian(
xlim = c(-2.8, 2.8),
ylim = c(-3.3, 3.3),
expand = FALSE,
clip = "off"
) +
theme_bw() +
theme(
strip.placement = 'bottom',
strip.background = element_blank(),
plot.margin = margin(16.5, 5.5, 5.5, 5.5))
#> Warning: Suppressing axis rendering when strip.position = 'bottom' and
#> strip.placement == 'outside'

reprex package 创建于 2020-01-05 (v0.3.0)

关于r - 将条形面板放置在地 block 的相对两侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59602174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com