我试图在每个水平框旁边添加n= x和类别,并且stat_n_text()函数有问题。这样,x=n和类别都与方框图对齐。这有什么可改变的吗?我已经包括了一些代码,以发挥周围和图片,我正在努力实现。非常感谢和感谢您的帮助。
library(patchwork)
library(ggplot2)
library(ggstance)
library(EnvStats)
p <- ggplot(diamonds, aes(x = carat, y = -0.5))
p1 <- p + geom_density(aes(x = carat), inherit.aes = FALSE)
p2 <- p + geom_boxploth(aes(fill = cut)) +stat_n_text() +
theme_classic() +
theme(axis.text = element_text(color = 'white'),
axis.title = element_blank(),
axis.line = element_blank(),
axis.ticks = element_blank())
p1/p2 + plot_layout(ncol = 1, nrow = 2, heights = c(2, 1),
guides = 'collect')编辑:在删除图例的同时,是否有可能有下面的轴?谢谢!

发布于 2022-05-08 12:06:48
我不认为stat_n_text()是你要找的。一种更简单的方法:
ltext <- diamonds %>%
group_by(cut) %>%
summarise(n=n()) %>%
apply(.,1,function(x) paste0(x[1]," (n=",x[2],")"))
ggplot(diamonds, aes(x=carat, y=0.5)) +
geom_boxplot(aes(fill=cut)) +
scale_fill_discrete(labels=ltext)

发布于 2022-05-08 12:28:43
获得所需数字的组合方法如下所示:
library(patchwork)
library(ggplot2)
library(ggstance)
library(EnvStats)
p <- diamonds %>%
group_by(cut) %>%
mutate(cut = paste0(cut, ', n = ', n())) %>%
ggplot(aes(x = carat, y = -0.5))
p1 <- p + geom_density(aes(x = carat), inherit.aes = FALSE)
p2 <- p + geom_boxploth(aes(fill = cut)) +
theme_classic() +
scale_fill_viridis_d() +
scale_y_discrete(expand = c(0, 0)) +
guides(fill = guide_legend(byrow = TRUE)) +
theme(axis.text = element_text(color = 'white'),
axis.title = element_blank(),
axis.line = element_blank(),
axis.ticks = element_blank(),
legend.key.height = unit(8, "mm"),
legend.spacing.y = unit(0, "mm"))
p1/p2 + plot_layout(ncol = 1, nrow = 2, heights = c(2, 1))

https://stackoverflow.com/questions/72160565
复制相似问题