【发布时间】:2021-11-07 17:32:06
【问题描述】:
我想做的是创建一个条形图,而不是显示 x 轴标签,我想尝试用单独的图替换标签。希望下面我的示例和尝试的解决方案能够解释这个问题。
首先,我创建一个条形图,然后创建多个单独的图以显示在 x 轴上,如下所示:
library(ggplot)
# create barplot ----------------------------------------------------------
df <- data.frame(vals = c(10, 5, 18),
name = c("A", "B", "C"))
bp <- df %>%
ggplot() +
geom_bar(aes(x = name, y = vals), stat = "identity") +
xlab("") +
theme_bw() +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank())
# create plots to use as x-axis --------------------------------------------
p1 <- ggplot(df, aes(x = vals, y = vals)) + geom_point() + theme_bw() +
theme(axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank())
p3 <- p2 <- p1
# turn into list of plots
myList <- list(p1, p2, p3)
尝试的解决方案:
我尝试的解决方案是使用 patchwork 包将 x 轴标签替换为单个图,如下所示:
library(patchwork)
# setting positions manually
design <- c(
area(1, 1, 4, 4),
area(5,1),
area(5,3),
area(5,4)
)
bp + myList + plot_layout(design = design)
但如您所见,这并没有将各个图对齐在相应的条形下方。如果条形图中使用的条形超过 3 个,对齐问题也会更加复杂。
此外,必须使用patchwork::area 函数手动设置位置并不理想。
是否可以创建一个条形图,其中 x 轴显示一堆单独的图,而我不必手动定位它们?
【问题讨论】: