ggplot2 | line plot 分组及均值线:聚类后的表达变化趋势图

1. 效果图

2. 预处理及绘图

复制代码
# 输入数据
> head(dat)
  Species cid     variable value
1  setosa   1 Sepal.Length   5.1
2  setosa   2 Sepal.Length   4.9
3  setosa   3 Sepal.Length   4.7
4  setosa   4 Sepal.Length   4.6
5  setosa   5 Sepal.Length   5.0
6  setosa   6 Sepal.Length   5.4


# 预处理及绘图
row.num=nrow(iris)
dat=iris[1:row.num,] #假设有4个时间点,最后一列是聚类结果
dat$cid=rownames(dat) #很重要!用于 ggplot 的 group
head(dat)
#宽变长
dat = tidyr::gather(data = dat, key = "variable", value = "value", -c(Species, cid))
# or: 宽变长
#dat=reshape2::melt(dat)

# 限定x轴顺序
dat$variable=factor(dat$variable, levels = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width'))
head(dat)
dim(dat)
ggplot(dat, aes(x=variable, y=value, group=cid, color=Species))+
  geom_hline(yintercept =4, linetype=2, size=0.5) +
  geom_line(size=0.3)+
  stat_summary(aes(group=1),fun.y=mean, geom="line", size=0.8, color="black")+
  facet_wrap(Species~.)+
  labs(x="Stage", y='Expression')+
  theme_bw()+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        axis.text = element_text(size=8, face = "bold"),
        axis.text.x=element_text(angle=60, hjust=1),
        strip.background = element_rect(fill="white"),
        strip.text = element_text(size = 8, face = "bold"))
相关推荐
qq_355357022 天前
SKC智能知识管理系统-设计分享 之 知识聚类图谱
机器学习·数据挖掘·聚类
柳杉2 天前
没写一行代码!我用 ChatGPT 5.6 (Sol) 做了一个智慧充电站 3D 大屏
前端·chatgpt·数据可视化
DolitD4 天前
无人机×云渲染:点量云流实时交互云推流方案
3d·云计算·数据可视化·虚拟现实
Lx3526 天前
成了!不会前端,花一天时间给公司 BI 系统装上了 AI 智能体!
数据分析·agent·数据可视化
树谷-胡老师6 天前
1980–2024 年全球干旱事件时空聚类数据集
机器学习·数据挖掘·聚类
航鑫光电9 天前
Canvas 手写实时波形图:一套通用的传感器数据可视化方案
数据可视化
尘中远9 天前
【Qwt 7.0 系列】快速入门与核心新特性概览 —— 更现代的 Qt 数据可视化库
qt·数据可视化·绘图·qwt·科学绘图
大鱼>9 天前
超参数调优进阶:Optuna/Bayesian/Early Stopping
人工智能·学习·机器学习·聚类
柳杉9 天前
别再手写大屏了!用这套「3D 地图 + 拖拽脚手架」示例源码,交付效率提升 80%
前端·three.js·数据可视化
大鱼>9 天前
生成对抗网络(GAN)原理与实战
人工智能·学习·机器学习·聚类