library(tidyverse)
library(patchwork)
library(ggbeeswarm)
library(ggsci)
library(multcompView)
library(magrittr)
library(wesanderson)
# 读取数据并进行过滤和选择
dat <- read_tsv("data.txt") %>%
filter(continent != "Oceania") %>%
select(2, 3, 4)
years <- unique(dat$year)
city_plots = list()
for (i in years) {
plot <- ggplot(dat %>% filter(year == i),
aes(x = continent,y = lifeExp,fill = continent)) +
geom_violin(scale = "width", width = 0.8) +
geom_quasirandom(aes(colour = continent), size = 0.5) +
labs(x = NULL, y = NULL, title = as.character(i)) +
scale_fill_manual(values=wes_palette("GrandBudapest2",type="discrete"))+
scale_color_npg() +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5, vjust = 0.5, color = "black", face = "bold", size = 10),
panel.background = element_blank(),
axis.line = element_line(color = "black"),
axis.line.x.top = element_line(color = "black"),
axis.text.x.top = element_blank(),
axis.ticks.y.right = element_blank(),
axis.text.y.right = element_blank(),
axis.ticks.x.top = element_blank(),
axis.text.y = element_text(color = "black", size = 6, face = "bold"),
axis.text.x = element_text(color = "black", size = 6, face = "bold")) +
guides(x.sec = "axis", y.sec = "axis")
# 保存绘图对象到列表
city_plots[[as.character(i)]] <- plot
# 打印并保存每个年份的图
#print(plot)
ggsave(filename = paste0("plot_", i, ".pdf"), plot = plot,
# width = 3.9, height = 2.53,
units = "in", dpi = 300)
}
# 使用patchwork包将所有图拼接在一起
wrap_plots(city_plots, nrow = 3)
dat <- read_tsv("data.txt") %>%
filter(continent != "Oceania") %>%
select(2, 3, 4)
# 获取唯一年份列表
years <- unique(dat$year)
# 创建绘图函数
create_plot <- function(i) {
plot <- ggplot(dat %>% filter(year == i),aes(x = continent,
y = lifeExp, fill = continent)) +
geom_violin(scale = "width", width = 0.8) +
geom_quasirandom(aes(colour = continent), size = 0.5) +
labs(x = NULL, y = NULL, title = as.character(i)) +
scale_fill_manual(values=wes_palette("GrandBudapest2",type="discrete"))+
scale_color_npg() +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5, vjust = 0.5, color = "black", face = "bold", size = 10),
panel.background = element_blank(),
axis.line = element_line(color = "black"),
axis.line.x.top = element_line(color = "black"),
axis.text.x.top = element_blank(),
axis.ticks.y.right = element_blank(),
axis.text.y.right = element_blank(),
axis.ticks.x.top = element_blank(),
axis.text.y = element_text(color = "black", size = 6, face = "bold"),
axis.text.x = element_text(color = "black", size = 6, face = "bold")) +
guides(x.sec = "axis", y.sec = "axis")
ggsave(filename = paste0("plot_", i, ".pdf"), plot = plot, width = 3.9, height = 2.53, units = "in", dpi = 300)
return(plot)
}
# 使用 map 函数生成每个年份的图表并打印
city_plots <- map(years, ~ {
plot <- create_plot(.x)
# print(plot)
plot
})
# 使用 patchwork 包将所有图拼接在一起
wrap_plots(city_plots, nrow = 3)
# 读取数据并进行过滤和选择
data <- read_tsv("data.txt") %>%
filter(continent != "Oceania") %>%
select(2, 3, 4)
# 创建绘图函数
make_plot <- function(data) {
ggplot(data, aes(x = continent, y = lifeExp.x, fill = continent)) +
geom_violin(scale = "width", width = 0.8) +
geom_quasirandom(aes(colour = continent), size = 0.5) +
geom_text(aes(label = Tukey, y = lifeExp.y + 3)) +
labs(x = NULL, y = NULL, title = unique(data$year)) +
scale_fill_manual(values=wes_palette("GrandBudapest2",type="discrete"))+
scale_color_npg() +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5, vjust = 0.5, color = "black", face = "bold", size = 10),
panel.background = element_blank(),
axis.line = element_line(color = "black"),
axis.line.x.top = element_line(color = "black"),
axis.text.x.top = element_blank(),
axis.ticks.y.right = element_blank(),
axis.text.y.right = element_blank(),
axis.ticks.x.top = element_blank(),
axis.text.y = element_text(color = "black", size = 6, face = "bold"),
axis.text.x = element_text(color = "black", size = 6, face = "bold")) +
guides(x.sec = "axis", y.sec = "axis")
}
# 分割数据并进行ANOVA和Tukey HSD检验
aov_data <- data %>%
split(.$year) %>%
map_dfr(~{
anova <- aov(lifeExp ~ continent, data = .x)
tukey_result <- TukeyHSD(anova)
cld <- multcompLetters4(anova, tukey_result)
# 提取显著性标记并添加到数据中
.x %>%
group_by(continent, year) %>%
summarise(lifeExp = max(lifeExp), .groups = 'drop') %>%
mutate(Tukey = cld$continent$Letters)
})
# 合并并绘图
plots <- data %>%
left_join(aov_data, by = c("continent", "year")) %>%
split(.$year) %>%
map(make_plot)
walk2(plots, names(plots), ~ggsave(filename = paste0("plot_aov-", .y, ".pdf"),
plot = .x,
width = 3.9, height = 2.53, units = "in", dpi = 300))
# 使用patchwork包将所有图拼接在一起
wrap_plots(plots, ncol = 4, nrow = 3)
❝本节介绍到此结束,有需要获取此文档数据的朋友,欢迎到淘宝店铺R语言数据分析指南,购买小编的R数据可视化案例文档(2024版),「购买将赠送2023年的绘图文档内容」。目前此文档(2023+2024)「已经更新上传了150+案例文档」,每个案例都附有相应的数据和代码,并配有对应的注释文档,方便大家学习和参考。 ❞
2024更新的绘图内容同时包含数据+代码+markdown注释文档+文档清单,「小编只分享案例文档不额外回答问题无答疑问。」