我有一个2x2的实验设计,我正在研究平均海胆丰度和珊瑚招募之间的关系。这项研究有两个地点(Waikiki和Hanauma Bay)和两个避难所处理(低和高)。我想制作一个图例,其中这4个独特的站点x避难所组合(Waikiki - Low,Waikiki - High,Hanauma Bay - Low,Hanauma Bay - High)由两个与站点(Waikiki和Hanauma Bay)对应的图形形状表示,填充这些形状表示避难所(低和高)。
当我通过将形状映射到站点并将填充映射到避难所来执行此操作时,我得到了下图,其中包含2个独立的站点和避难所图例。我希望在图例中用点的形状表示所有4个站点x避难所的组合,以表示站点,而黑色或白色填充表示避难所。
数据库
urchin_vs_recruitment_summary_data <- structure(list(Site_long = structure(c(2L, 2L, 1L, 1L), .Label = c("Hanauma Bay",
"Waikiki"), class = "factor"), Treatment_long = c("Closed", "Open",
"Closed", "Open"), Shelter = structure(c(1L, 2L, 1L, 2L), .Label = c("Low",
"High"), class = "factor"), recruitment_mean = c(4.16666666666667,
2.5, 0.833333333333333, 1.16666666666667), recruitment_sd = c(2.96741563579414,
2.21735578260835, 1.06718737290547, 1.51840559652405), recruitment_lower = c(3.31004755860504,
1.85990452101095, 0.525262874821961, 0.728340726720569), recruitment_upper = c(5.02328577472829,
3.14009547898905, 1.14140379184471, 1.60499260661276), urchin_mean = c(0.166666666666667,
0.375, 3.66666666666667, 22.75), urchin_sd = c(0.372677996249965,
0.414578098794425, 2.73353657780945, 17.3066701977398), urchin_lower = c(0.0590837959386828,
0.255321611530458, 2.87756262714768, 17.7539946512794), urchin_upper = c(0.27424953739465,
0.494678388469542, 4.45577070618566, 27.7460053487206)), row.names = c(NA,
-4L), vars = c("Site_long", "Treatment_long"), drop = TRUE, indices = list(
2L, 3L, 0L, 1L), group_sizes = c(1L, 1L, 1L, 1L), biggest_group_size = 1L, labels = structure(list(
Site_long = structure(c(1L, 1L, 2L, 2L), .Label = c("Hanauma Bay",
"Waikiki"), class = "factor"), Treatment_long = c("Closed",
"Open", "Closed", "Open")), row.names = c(NA, -4L), class = "data.frame", vars = c("Site_long",
"Treatment_long"), drop = TRUE), class = c("grouped_df", "tbl_df",
"tbl", "data.frame"))图
urchin_vs_recruitment_plot <- ggplot(data = urchin_vs_recruitment_summary_data, aes(x = urchin_mean, y = recruitment_mean, fill = Shelter, shape = Site_long)) +
ggtitle("Urchin Abundance vs Coral Recruitment") +
geom_point(aes(size = 3)) +
scale_shape_manual(values = c(21, 24)) +
coord_cartesian(ylim = c(0,5)) +
scale_fill_manual(values = c(NA, "black"), guide = guide_legend(override.aes = list(shape = 21))) +
guides(size = FALSE) +
theme(text = element_text(size = 15)) +
geom_errorbar(aes(ymin = recruitment_lower, ymax = recruitment_upper), width = .6) +
geom_errorbarh(aes(xmin = urchin_lower, xmax = urchin_upper), height = .15) +
labs(x = "Mean urchin abundance ± SEM", y = "Mean coral recruitment ± SEM") +
theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"), axis.title = element_text(size = rel(1.5)), axis.text = element_text(size = rel(1.5)), legend.text = element_text(size = rel(1.5)), plot.title = element_text(size = 20, hjust = 0.5, vjust = -1.5), legend.position = c(.8, .8))如上所述,我想要一个有4个条目的单一图例(怀基基-低,怀基基-高,花间湾-低,花间湾-高)与怀基基-低,填充或黑色三角形的怀基基-低,填充或黑色三角形为怀基基-高,非填充或白色圆圈为花间湾-低,并填充或黑色圆圈为花间湾-高。
发布于 2019-07-13 06:19:44
使用一个具有4个级别的变量。适当设置values:
ggplot(
urchin_vs_recruitment_summary_data,
aes(urchin_mean, recruitment_mean, fill = interaction(Site_long, Shelter), shape = interaction(Site_long, Shelter))
) +
geom_errorbarh(aes(xmin = urchin_lower, xmax = urchin_upper), height = .15) +
geom_errorbar(aes(ymin = recruitment_lower, ymax = recruitment_upper), width = .6) +
geom_point(size = 5) +
scale_shape_manual(name = 'site', values = c(21, 24, 21, 24)) +
scale_fill_manual(name = "site", values = c(NA, NA, 1, 1))

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