R语言 如何为ggplot2的每一列添加y轴标签?

qmelpv7a  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(210)

例如,我想在第二列y轴上添加log10(Sepal.Width)标签

data(iris)
iris$Sepal.Width[iris$Species=="versicolor"] <- log10(iris$Sepal.Width[iris$Species=="versicolor"])
p <- iris %>% 
  ggplot(aes(x = Sepal.Length, y = Sepal.Width)) +
  theme_classic()+
  geom_point()
p+  facet_wrap(~Species,scales = "free")
nszi6y05

nszi6y051#

给每个面板添加标题的一个选择(或者我知道的唯一一个)是创建单独的图,然后使用patchwork将它们粘合在一起。为此,我使用facetting变量split数据,使用自定义绘图函数,最后使用Map循环分割数据和轴标题向量:

library(ggplot2)
library(patchwork)

iris2 <- iris
iris2$Sepal.Width[iris2$Species == "versicolor"] <- log10(iris2$Sepal.Width[iris2$Species == "versicolor"])

plot_fun <- function(.data, y) {
  ggplot(.data, aes(x = Sepal.Length, y = Sepal.Width)) +
    theme_classic() +
    geom_point() +
    facet_wrap(~Species, scales = "free") +
    labs(y = y)
}

y_title <- c("Sepal.Width", "log10(Sepal.Width)", "Sepal.Width")
iris_split <- split(iris2, iris2$Species)

Map(plot_fun, iris_split, y_title) |> 
  wrap_plots()

相关问题