首页 > 解决方案 > ggplot (R) 中与已编辑实验室和 ylab 组合的散点图

问题描述

我想绘制一个 PCA 并且还想包括轴上的变化百分比。当我一张一张地做图时,这很好用。但我想将两个图都包含在一个图中,其中包含两个相邻的图和一个图例。

图书馆(“ggpubr”)

[b <- ggplot(table, aes(column_1, column2, col=ethnicity_type)) + geom_point()
#b <- b + scale_colour_manual(values = c("red", "blue"))
b <- b + coord_equal() + theme_light()
b + xlab(paste0("PC1 (", signif(pve$pve\[1\], 3), "%)")) + ylab(paste0("PC2 (", signif(pve$pve\[2\], 3), "%)"))


# Create a violin plot
c <- ggplot(table, aes(column_1, column_2, col=ethnicity_type)) + geom_point()
#b <- b + scale_colour_manual(values = c("red", "blue"))
c <- c + coord_equal() + theme_light()
c + xlab(paste0("PC1 (", signif(pve$pve\[1\], 3), "%)")) + ylab(paste0("PC3 (", signif(pve$pve\[3\], 3), "%)"))

figure <- ggarrange(b, c,
                    labels = c("A", "B"),
                    ncol = 2, nrow = 1,
                    common.legend = TRUE, legend="bottom")][1]

这是一张带有标签轴的图片的样子

标签: rggplot2

解决方案


如果我明白你想要什么,看起来你就快到了。我是这样做的:

set.seed(45301)
z1 <- rnorm(100)
z2 <- rnorm(100)
dat <- data.frame(
  x1 = z1 + .5*rnorm(100),
  x2 = z2 + .5*rnorm(100),
  x3 = z1 + z2 + rnorm(100),
  x4 = -z1 + .5*z1 + .6*rnorm(100),
  x5 = .5*z1 + z2 + .7*rnorm(100),
  ethnicity_type = factor(sample(1:3, 100, replace=TRUE), 
                 labels = paste0("Group", 1:3))
)
library(dplyr)
library(ggpubr)
p <- princomp(scale(dat %>% select(contains("x"))))
pve <- list(pve =  p$sdev^2/sum(p$sdev^2))
dat$column_1 <- p$scores[,1]
dat$column_2 <- p$scores[,2]
dat$column_3 <- p$scores[,3]

library(ggplot2)
b <- ggplot(dat, aes(column_1, column_2, col=ethnicity_type)) + geom_point()
#b <- b + scale_colour_manual(values = c("red", "blue"))
b <- b + coord_cartesian(xlim=c(-4,4), ylim=c(-4,4)) + theme_light() 
b <- b + xlab(paste0("PC1 (", signif(pve$pve[1], 3), "%)")) + ylab(paste0("PC2 (", signif(pve$pve[2], 3), "%)"))


# Create a violin plot
c <- ggplot(dat, aes(column_1, column_3, col=ethnicity_type)) + geom_point()
#b <- b + scale_colour_manual(values = c("red", "blue"))
c <- c + coord_cartesian(xlim=c(-4,4), ylim=c(-4,4)) + theme_light() 
c <- c + xlab(paste0("PC1 (", signif(pve$pve[1], 3), "%)")) + ylab(paste0("PC3 (", signif(pve$pve[3], 3), "%)"))

figure <- ggarrange(b, c,
                    labels = c("A", "B"),
                    ncol = 2, nrow = 1,
                    common.legend = TRUE, legend="bottom")


在此处输入图像描述


推荐阅读