加载R包
代码语言:javascript复制library(tidyverse)
library(ggtext)
导入数据
代码语言:javascript复制df <- readr::read_csv('data.csv')
构建标签数据
labs <- data.frame(Episode_order = c(7, 18, 29), y = c(28, 32, 40),
lab = c("<span style = 'color: #4169E1;'>Season 1</span>",
"<span style = 'color: #5D478B;'>Season 2</span>",
"<span style = 'color: darkorange3;'>Season 3</span>"))
数据可视化
代码语言:javascript复制ggplot(df, aes(x = Episode_order))
# 为y轴的值添加文本注释
annotate('text', x = 34.5, y = c(12, 22, 32, 42, 52),
label = c('10', '20', '30', '40', '50'), color = "black")
# 在y轴上以10为间隔添加水平线
geom_hline(yintercept = seq(0, 50, by = 10), colour = "grey70", linewidth = 0.3)
# 添加柱状图,表示总数
geom_col(aes(y = F_count_total, fill = as.factor(Season)), alpha = 0.8, show.legend = FALSE)
# 添加柱状图,表示RK的计数
geom_col(aes(y = F_count_RK, fill = as.factor(Season)), show.legend = FALSE)
# 添加富文本,用于显示季节标签
geom_richtext(data = labs, aes(x = Episode_order, y = y, label = lab), fill = NA,
label.color = NA, size = 8)
# 手动设置填充颜色
scale_fill_manual(values = c("#788FCE","#E6956F","#A88AD2"))
# 设置y轴的范围和间隔
scale_y_continuous(limits = c(0, 52), breaks = seq(0, 50, 10))
coord_polar() # 使用极坐标
theme_void() # 使用空白主题
# 设置主题,移除面板网格和背景
theme(panel.grid = element_blank(),
panel.background = element_rect(fill = NA, color = NA),
plot.background = element_rect(fill = NA, color = NA))