当前位置: 首页 > article >正文

【R语言】ggplot2绘图常用操作

目录

坐标轴以及标签的相关主题

图例调整

字体类型设置

颜色相关

ggplot2如何添加带箭头的坐标轴?

标题相关主题调整

修改点图中点的大小

如何使得点的大小根据变量取值的大小来改变?

柱状图和条形图


坐标轴以及标签的相关主题

theme(

# 增大X轴标签字体大小

axis.text.x = element_text(angle = 45, hjust = 1, face = "bold", size = 12),

# 增大Y轴标签字体大小,不旋转

axis.text.y = element_text(face = "bold", size = 12),

# 增大X轴标题字体大小

axis.title.x = element_text(face = "bold", size = 14),

# 增大Y轴标题字体大小

axis.title.y = element_text(face = "bold", size = 14) ,

axis.line.y = element_blank(),# 移除 y 轴线

#增大分面标签字体大小

strip.text = element_text(face = "bold",size = 14) ,

# 调整标题字体大小和加粗 plot.title = element_text(size = 16, face = "bold"),

#修改坐标轴刻度的代码,就是那个刻度的长度和宽度

axis.ticks.length.x = unit(0.2, 'cm'),

axis.ticks.length.y = unit(0.2, 'cm'),

axis.ticks = element_line(size = 1)

)

hjust = 1表示右对齐,0.5表示居中对齐,0表示左对齐。y轴也可以设置angle,如果 axis.title.y的angle被设置为90,y轴标题就竖着显示了

图例调整

图例,分面标签字体大小,x轴和y轴的标签位置,写在theme里面

#调整图例文本大小

legend.text = element_text(face = "bold",size = 20),

#调整图例标题大小

legend.title = element_text(face = "bold",size = 20),

#去除图例标题

legend.title = element_blank(),

legend.position = "top",#图例显示在上方

legend.direction = "vertical",#图例的方向为垂直。

legend.justification = c(1,0),#图例的右上角与图形的右上角对齐

# 调整分面行标签的文本大小

就是调PBS和LR strip.text.y = element_text(size = 14, face = "bold"),

# 调整分面列标签的文本大小

strip.text.x = element_text(size = 14, face = "bold"),

#调整x轴和y轴标签的位置

axis.title.x = element_text(vjust = 0.5, hjust = 0),

axis.title.y = element_text(vjust = 0.5, hjust = 0)

调整图例颜色块(也称为图例键)的形状和大小使用代码

guides( color = guide_legend( override.aes = list( size = 6, # 图例点大小 alpha = 1, # 图例不透明 shape = 16 # 图例形状统一为实心圆 ) ) )

设置背景板和绘图区域为白色,写在theme里面就行

plot.background = element_rect(fill = "white"), # 设置绘图区域背景颜色 panel.background = element_rect(fill = "white") , # 设置面板背景颜色 panel.grid = element_blank(), # 去除网格线 这个通常要运行 panel.border = element_blank(), # 去除面板边框 这个一般不会运行,没有边框更难看 axis.line.x = element_blank(),#不显示x轴坐标轴 axis.line.y= element_blank(),#不显示y轴坐标轴

注意所有的背景以及字体的调整都要放在同一个theme中,防止覆盖原来的theme

在theme外边加这两句可以翻转坐标轴

+coord_flip()+ RotatedAxis()

字体类型设置

ggplot设置全局字体,下面两个挑一个就行

theme( text = element_text(family = "Times New Roman")#设置全局字体为Times New Roman text = element_text(family = "Arial")#设置全局字体为Arial )

去除图例写+NoLegend()

去除坐标轴写+NoAxes()

在图上加一个黑色框写

theme(panel.border = element_rect(fill = NA,color = "black",size=1.5,linetype = "solid"))

在theme后面写上+coord_cartesian(clip = "off")默认情况下,当图形元素超出绘图区域时会被裁剪掉。当设置为 

"off" 时,允许图形元素绘制在绘图区域之外,这样可以避免一些元素(如标签、注释等)因为超出绘图区域而被截断,确保所有需要显示的元素都能完整呈现。

颜色相关

ggplot2绘图的时候快速更换颜色可以使用

scale_fill_brewer(palette = "Set2")

用之前首先要library(RColorBrewer)

同时可以使用代码dput(brewer.pal(9, "Set1"))来把使用的颜色打印出来

col

ggplot2如何添加带箭头的坐标轴?

#添加开放式箭头 p2 <- p1+theme(

axis.line = element_line(arrow = arrow(length = unit(0.3, "cm")),linewidth=0.8))

#添加闭合式箭头 p3 <- p1+theme(axis.line = element_line(arrow = arrow(length = unit(0.2, "cm"),type="closed"),linewidth=0.8))

#添加双向箭头 p4 <- p1+theme(axis.line.x = element_line(arrow = arrow(length = unit(0.2, "cm"), type="closed",ends="both"),linewidth=0.8),

axis.line.y = element_line(arrow = arrow(length = unit(0.2, "cm"), type="closed"),linewidth=0.8))

高分文章中坐标轴没有箭头,都是直接一根线,坐标轴是线的代码是:

axis.line = element_line(color = "black", size = 0.5)

标题相关主题调整

把下面这句写到theme里面即可使主标题居中

plot.title = element_text(hjust = 0.5, face = "bold", size = 14)

重命名标题:使用labs,这个是独立于theme的,不是在theme里面写,而是用+连接,和theme是同级的

如何设置为空就可以删除对应的标题

p2 <- p2 + labs(x = "新的X轴标题", y = "新的Y轴标题",title = "主标题")

让点图中的点随着某个变量的取值而变化,比如随着logFC的绝对值变大,点也变大,实际上就是在aes中把size赋值为某个变量就行,一定要写到aes里面,aes即美学映射

p <- p + geom_point(aes(size = abs(avg_log2FC))) + scale_size_continuous(name = "Abs Log2FC", breaks = seq(0, max(abs(deg$avg_log2FC)), by = 1), range = c(1, 5)) # 根据需要调整范围

修改点图中点的大小

p1<-p1 + geom_point(size = 5)

只要图是一个点图同时是ggplot对象就可以这样来定点的大小,比如cellchat包中的netVisual_bubble函数绘制的就是一个ggplot类型的点图,那我们就可以把这个函数绘制的图存到变量p1里面,然后使用netVisual_bubble来修改所有点的大小为5

如何使得点的大小根据变量取值的大小来改变?

只需要在aes里面写size = 某变量,就可以根据指定变量的取值来决定点的大小

如果点的大小是通过某个变量的值来改变的,我们可以人为规定点的大小的范围,避免变量取值范围过大引起的点的形状大小差异过大,调整方法为:

p1

柱状图和条形图

geom_bar(stat = "identity", position = "dodge")生成分组柱状图

geom_bar(stat = "identity", position = "stack")生成堆叠柱状图

想让条形图变成冲积图只需要在画条形图的代码中加上

geom_stratum(aes(fill = Taxon),width = 0.6)+ geom_alluvium(aes(fill = Taxon), alpha = .5)

相关文章:

【R语言】ggplot2绘图常用操作

目录 坐标轴以及标签的相关主题 图例调整 字体类型设置 颜色相关 ggplot2如何添加带箭头的坐标轴&#xff1f; 标题相关主题调整 修改点图中点的大小 如何使得点的大小根据变量取值的大小来改变&#xff1f; 柱状图和条形图 坐标轴以及标签的相关主题 theme( # 增大X…...

正态分布的奇妙性质:为什么奇数阶中心矩(odd central moments)为零?

正态分布的奇妙性质&#xff1a;为什么奇数阶矩为零&#xff1f; 正态分布&#xff08;Normal Distribution&#xff09;是统计学中最常见的分布之一&#xff0c;它的钟形曲线几乎无处不在&#xff0c;从身高体重到测量误差&#xff0c;都能看到它的影子。除了均值和方差这两个…...

架构——Nginx功能、职责、原理、配置示例、应用场景

以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明&#xff1a; 一、Nginx 的核心功能 1. 静态资源服务 功能&#xff1a;直接返回静态文件&#xff08;如 HTML、CSS、JS、图片、视频等&#xff09;。配置示例&#xff1a;server {listen 80…...

涉密载体管控系统革新:RFID技术引领,信息安全新境界

行业背景 文件载体管控系统DW-S402是用于对各种SM载体进行有效管理的智能柜&#xff08;智能管理系统&#xff09;&#xff0c;实现对载体的智能化、规范化、标准化管理&#xff0c;广泛应用于保密、机要单位以及企事业单位等有载体保管需求的行业。 随着信息化技术发展&…...

基于 SpringBoot 的 “电影交流平台小程序” 系统的设计与实现

大家好&#xff0c;今天要和大家聊的是一款基于 SpringBoot 的 “电影交流平台小程序” 系统的设计与实现。项目源码以及部署相关事宜请联系我&#xff0c;文末附上联系方式。 项目简介 基于 SpringBoot 的 “电影交流平台小程序” 系统设计与实现的主要使用者分为 管理员 和…...

【Rust中级教程】2.9. API设计原则之显然性(obvious) :文档与类型系统、语义化类型、使用“零大小”类型

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 2.9.1. 文档与类型系统 用户可能不会完全理解API的所有规则和限制。所以你写的API应该让你…...

git branch

文章目录 1.简介2.格式3.选项4.示例参考文献 1.简介 git branch 用于管理分支&#xff0c;包括查看、创建、删除、重命名和关联。 git branch 是 Git 版本控制系统中用于管理分支的命令。分支是 Git 的核心功能之一&#xff0c;允许开发者在同一个代码库中并行开发不同的功能…...

【网络编程】广播和组播

数据包发送方式只有一个接受方&#xff0c;称为单播。如果同时发给局域网中的所有主机&#xff0c;称为广播。只有用户数据报(使用UDP协议)套接字才能广播&#xff1a; 广播地址以192.168.1.0 (255.255.255.0) 网段为例&#xff0c;最大的主机地址192.168.1.255代表该网段的广…...

运维Crontab面试题及参考答案

Crontab 文件的六个域分别是什么&#xff1f;顺序如何&#xff1f; Crontab 文件用于设置定时执行任务&#xff0c;其六个域及顺序从左到右依次为&#xff1a;分钟&#xff08;Minute&#xff09;、小时&#xff08;Hour&#xff09;、日期&#xff08;Day of month&#xff09…...

Lecture 1 - AI Systems (Overview)

一、Machine Learning Approach标准机器学习流程 • Train ML algorithm&#xff08;训练机器学习算法&#xff09;&#xff1a;基于收集的数据训练机器学习模型。 二、Machine Learning for Adaptation&#xff08;适应性机器学习&#xff09; 加入了数据更新和自动化的部分…...

Ansible 学习笔记

这里写自定义目录标题 基本架构文件结构安装查看版本 Ansible 配置相关文件主机清单写法 基本架构 Ansible 是基于Python实现的&#xff0c;默认使用22端口&#xff0c; 文件结构 安装 查看用什么语言写的用一下命令 查看版本 Ansible 配置相关文件 主机清单写法...

设计模式-结构型-代理模式

1. 代理模式概述 代理模式&#xff08;Proxy Pattern&#xff09; 是一种结构型设计模式&#xff0c;它允许通过代理对象来控制对目标对象的访问。代理模式主要用于以下场景&#xff1a; 控制对象访问&#xff1a;限制某些对象的访问权限&#xff0c;例如权限控制。 延迟实例…...

FCC CE SRRC MIC是什么意思?

1.FCC CE SRRC MIC是什么意思&#xff1f; 2.4000 GHz 至 2.4835 GHz&#xff1a;<33 dBm&#xff08;FCC&#xff09;&#xff0c;<20 dBm&#xff08;CE/SRRC/MIC&#xff09; 5.150 GHz 至 5.250 GHz&#xff08;CE&#xff1a;5.170 GHz 至 5.250 GHz&#xff09;&a…...

springboot005学生心理咨询评估系统(源码+数据库+文档)

源码地址&#xff1a;学生心理咨询评估系统 文章目录 1.项目简介2.部分数据库结构与测试用例3.系统功能结构4.包含的文件列表&#xff08;含论文&#xff09;后台运行截图 1.项目简介 ​ 使用旧方法对学生心理咨询评估信息进行系统化管理已经不再让人们信赖了&#xff0c;把现…...

Apache Doris:一款高性能的实时数据仓库

Apache Doris 是一款基于 MPP 架构的高性能、实时分析型数据库。它以高效、简单和统一的特性著称&#xff0c;能够在亚秒级的时间内返回海量数据的查询结果。Doris 既能支持高并发的点查询场景&#xff0c;也能支持高吞吐的复杂分析场景。 Apache Doris 最初是百度广告报表业务…...

使用Vue-Flow创建一个流程图可视化节点坐标查询器

在开发中遇到这样一个需求&#xff0c;需要后端返回数据前端网页生成流程图&#xff0c;由于流程图使用了Vue-Flow&#xff0c;所以需要坐标来辅助后端生成数据。 首先引入方法并定义添加节点数据 const { updateEdge, addEdges, addNodes} useVueFlow() const add_nodes …...

面试基础--Java 集合框架详解

Java 集合框架详解&#xff1a;从 ArrayList 到 HashMap 的底层原理 引言 在 Java 开发中&#xff0c;集合框架&#xff08;Collection Framework&#xff09;是处理数据存储和操作的核心工具。无论是日常开发还是大厂面试&#xff0c;对集合框架的理解都是考察的重点之一。本…...

轻量级日志管理平台Grafana Loki

文章目录 轻量级日志管理平台Grafana Loki背景什么是Loki为什么使用 Grafana Loki&#xff1f;架构Log Storage Grafana部署使用基于 Docker Compose 安装 LokiMinIO K8s集群部署Loki采集Helm 部署方式和案例 参考 轻量级日志管理平台Grafana Loki 背景 在微服务以及云原生时…...

回文串

长度为偶数的串&#xff0c;重排连续字串变成回文串。 Problem - D - Codeforces 代码&#xff1a; #include <bits/stdc.h> #define fi first #define se second using namespace std; typedef long long LL; typedef pair<int,int> PII; typedef pair<LL,L…...

《跟李沐学 AI》AlexNet论文逐段精读学习心得 | PyTorch 深度学习实战

前一篇文章&#xff0c;使用 AlexNet 实现图片分类 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于学习 9年后重读深度学习奠基作之一&#xff1a;AlexNet【下】【论文精读】】的心得。 《跟李沐…...

【电机控制器】FU6832S——持续更新

【电机控制器】FU6832S——持续更新 文章目录 [TOC](文章目录) 前言一、ADC二、UART三、PWM四、参考资料总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、ADC 二、UART 三、PWM 四、参考资料 总结 本文仅仅简…...

Flutter屏幕适配终极方案:flutter_screenutil深度解析

在跨平台应用开发中&#xff0c;屏幕适配始终是开发者面临的核心挑战。Flutter虽然自带响应式布局体系&#xff0c;但面对复杂的设计稿标注时&#xff0c;手动计算比例效率低下。今天我们将深度解析目前Flutter社区最受欢迎的屏幕适配方案——flutter_screenutil&#xff0c;手…...

计算机视觉算法实战——产品分拣(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ 1. 领域简介✨✨ 产品分拣是工业自动化和物流领域的核心技术&#xff0c;旨在通过机器视觉系统对传送带上的物品进行快速识别、定位和分类&a…...

可视化报表

根据你的需求&#xff0c;以下是一些可以实现报表可视化的开源项目&#xff0c;这些项目提供了类似阿里巴巴 FBI 报表的功能&#xff0c;支持数据可视化、报表设计、仪表盘和大屏展示等功能&#xff1a; 1. DataEase DataEase 是一个开源的 BI 工具&#xff0c;帮助用户快速分…...

基于模块联邦的微前端架构:重构大型前端应用的模块化边界

引言&#xff1a;企业级前端的模块化困境 字节跳动广告系统采用Webpack 5模块联邦后&#xff0c;主应用构建时间从14分钟降至38秒&#xff0c;微应用独立发布频率提升至每天50次。在动态加载机制下&#xff0c;首屏资源加载体积减少79%&#xff0c;跨团队组件复用率达到92%。其…...

Android之图片保存相册及分享图片

文章目录 前言一、效果图二、实现步骤1.引入依赖库2.二维码生成3.布局转图片保存或者分享 总结 前言 其实现在很多分享都是我们自定义的&#xff0c;更多的是在界面加了很多东西&#xff0c;然后把整个界面转成图片保存相册和分享&#xff0c;而且现在分享都不需要第三方&…...

Linux放行端口

8080这个端口测试看telnet是不通的&#xff0c;您服务器内是否有对应的业务监听了这个端口呢&#xff1f;您到服务器内执行下&#xff1a; netstat -nltp |grep 8080 同时服务器内执行下&#xff1a; systemctl status firewalld iptables -nL 截图反馈下&#xff0c;我看下防火…...

Spring Boot延迟执行实现

说明&#xff1a;本文介绍如何在Spring Boot项目中&#xff0c;延迟执行某方法&#xff0c;及讨论延迟执行方法的是事务问题。 搭建Demo 首先&#xff0c;创建一个Spring Boot项目&#xff0c;pom.xml如下&#xff1a; <?xml version"1.0" encoding"UTF-…...

npm i 失败权限问题

安装完node之后, 测试全局安装一个最常用的 express 模块进行测试 失败&#xff0c;但是用管理员权限打开cmd 安装就成功。 报错如下&#xff1a; npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and …...

uniapp 微信小程序打包之后vendor.js 主包体积太大,解决办法,“subPackages“:true设置不生效

现在是打包的时候&#xff0c;vendor.js 的内容全部打到了主包里面&#xff0c; 说一下我的方法&#xff1a; 1. 通过发行 小程序打包 这样打包的体积是最小的&#xff0c;打包之后打开微信开发工具&#xff0c;然后再上传 2.manifest.json,在“mp-weixin”里添加代码 "…...