有点歧义
2023-02-18 16:46:48 时间
title: "有点歧义"
output: html_document
date: '2022-12-25'
editor_options:
chunk_output_type: console
平平无奇小提琴图
library(ggplot2)
p1 = ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_violin(aes(fill = Species))+
theme_bw()
p2 = ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_violin(aes(fill = Species),scale = "width")+
theme_bw()
p3 = ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_violin(aes(fill = Species),scale = "width",trim = F)+
theme_bw()
library(patchwork)
p1+p2+p3+plot_layout(guides = "collect")
其中涉及到的两个参数:
scale 默认count,点的数量决定小提琴图的胖瘦,scale = "width"是让多个小提琴显示同样的最大宽度。
trim 默认T 会修剪小提琴的上下尖尖,画出来的图范围就是数据分布范围。trim = F 画出来的图上下两端是尖的,颜值变高了。
这两个参数很有意思,我最近画图时发现,之前写的代码套示例数据是没看出问题的,但是换了数据瓦特了啊。
load("plot_dat.Rdata")
ggplot(dat,aes(Cell_type,Proportion,fill = Group)) +
geom_violin(trim = F) +
theme_bw()
哈,这个图存在好几个问题
1.小提琴为什么是一条线,琴呢?
就是因为横坐标数量太多,所以小提琴被挤扁了,调图的宽度没用。scale参数你值得拥有
2.我画的是cibersort免疫浸润的结果,怎么可能会有负数?
神奇的trim = F 的极端场景就是这个,很有歧义。因为翻了之前的示例代码,带有trim = F,一开始没注意它,现在看到,会让人误解数据分布范围,用的时候得比较一下和正确的数据分布范围查的多不多,不能为了美观丧失正确性啊!
ggplot(dat,aes(Cell_type,Proportion,fill = Group)) +
geom_violin(trim = F,scale = "width") +
theme_bw() +
theme(axis.text.x = element_text(angle=80,hjust = 1))+
ggtitle("离离原上谱")
3.横坐标有覆盖。
这个倒是简单哦。斜一下就行了。
所以正确的代码应该是
ggplot(dat,aes(Cell_type,Proportion,fill = Group)) +
geom_violin(scale = "width") + #trim 默认T,不写也是一样的
theme_bw() +
theme(axis.text.x = element_text(angle=80,hjust = 1))
哈哈!这个问题难度大不,反正我是排查了好一会。
相关文章
- Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序
- 我以订披萨为例,给女朋友详细讲了Java设计模式的3种工厂模式
- 【架构师(第二十五篇)】编辑器开发之属性编辑区域表单渲染
- 【架构师(第二十六篇)】编辑器开发之属性编辑同步渲染
- 2021年度“CCF-腾讯犀牛鸟基金”发布结题评优结果
- 【架构师(第二十七篇)】前端单元测试框架 Jest 基础知识入门
- 太空噗|重燃太空热潮!与噗噗星人一同探索星海浪漫
- 算法工程师深度解构ChatGPT技术
- 【架构师(第二十八篇)】 测试工具 Vue-Test-Utils 基础语法
- 【架构师(第二十九篇)】Vue-Test-Utils 触发事件和异步请求
- 【架构师(第三十篇)】Vue-Test-Utils 全局组件和第三方库 vuex | vue-router
- 【架构师(第三十一篇)】前端测试之 TDD 的开发方式
- 【架构师(第三十二篇)】 通用上传组件开发及测试用例
- 【架构师(第三十三篇)】 Vue 中的实例及本地图片预览
- 【架构师(第三十四篇)】 业务组件库开发之 vue3 的插件系统
- 【架构师(第三十五篇)】 业务组件库开发之使用 Rollup 进行打包
- 【架构师(第三十六篇)】 业务组件库开发之发布到 NPM
- 【架构师(第四十二篇)】 服务端开发之常用的登录鉴权方式
- 【架构师(第四十三篇)】 服务端开发之单元测试和接口测试
- 【架构师(第四十四篇)】 服务端开发之 pm2 和 nginx 介绍