我想让组织具有不同的颜色和形状,例如心脏是紫色正方形,肝脏是绿色三角形,肺是橙色菱形。此外,我还喜欢采用不同的形状,特别是封闭或开放的形状。因此,控制心将是一个开放的紫色方块。我遇到困难,因为我希望将不同的形状参数应用于两个不同的变量。下面是实现散点图的可重现代码。将不胜感激任何指导!
library(tidyverse)
ex <- data.frame(tissue=rep(c('lung','heart', 'liver'),each=10),
treatment=rep(rep(c('smoking','control'),5),each=3),
value1=rnorm(30) + rep(c(3,1,4,2,5),each=6),
value2=rnorm(30) + rep(c(30,11,43,21,15), each = 6))
ggplot(ex, aes(value1, value2)) +
geom_point(size = 2, aes(col = tissue, shape = treatment))+
scale_color_manual(values = c("#7030a0", "#548235", "#c55a11")) +
scale_shape_manual(values = c(21, 19))
由于您有两层变量,我建议使用
interaction()
创建它们的组合,然后相应地设置比例/图例值。
library(ggplot2)
ggplot(ex, aes(value1, value2)) +
geom_point(size = 2, aes(col = interaction(tissue, treatment), shape = interaction(tissue, treatment))) +
scale_color_manual(values = c("heart.control" = "#7030a0",
"heart.smoking" = "#7030a0",
"liver.control" = "#548235",
"liver.smoking" = "#548235",
"lung.control" = "#c55a11",
"lung.smoking" = "#c55a11"),
labels = c("heart", "liver", "lung"),
breaks = c("heart.control", "liver.control", "lung.control")) +
scale_shape_manual(values = c("heart.control" = 15,
"heart.smoking" = 22,
"liver.control" = 17,
"liver.smoking" = 24,
"lung.control" = 18,
"lung.smoking" = 25),
labels = c("control", "treatment"),
breaks = c("heart.control", "heart.smoking")) +
labs(color = "Tissue", shape = "treatment") +
guides(guides(colour = guide_legend(override.aes = list(fill = c("#7030a0", "#548235", "#c55a11"), shape = c(22, 24, 25)))))