R语言绘图——坐标轴及图例
掌握坐标轴与图例的设置与调整,对于提升数据可视化的清晰度和可读性至关重要。通过这些工具,可以有效地传达数据背后的故事,提高图表的表现力。
0x01 坐标轴
一、坐标轴的设置
1、修改坐标轴的标签
在ggplot2中,坐标轴是根据数据自动生成的,但是我们可以通过labs()函数为坐标轴添加标签(x轴和y轴的名称)。通常x轴用于表示自变量,y轴用于表示因变量。
library(ggplot2)# 创建简单散点图,并设置坐标轴的标签
ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +labs(x = "Weight of Car (1000 lbs)", y = "Miles per Gallon (MPG)")
2、坐标轴的翻转
有时为了更清晰地展示数据,我们可以将坐标轴翻转,即将x轴和y轴互换。coord_flip()函数可以实现这一点。
ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +coord_flip() # 翻转坐标轴
3、坐标轴范围的控制
通过scale_x_continuous()和scale_y_continuous()可以设置坐标轴的数值范围。
limits:用来限制x轴或y轴的显示范围。例如,可以通过设置limits只显示部分数据。
ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +scale_x_continuous(limits = c(2, 6)) + # 限制x轴的显示范围scale_y_continuous(limits = c(10, 35)) # 限制y轴的显示范围
也可以通过xlim和ylim来控制。
ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +xlim(limits = c(2, 6)) + # 限制x轴的显示范围ylim(limits = c(10, 35)) # 限制y轴的显示范围
4、坐标轴顺序的调整
ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) +geom_bar(position = "dodge",stat = "identity") +scale_x_discrete(limits = c("d21","d16","d20"))
5、坐标轴子集的截取
ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) +geom_bar(position = "dodge",stat = "identity") +scale_x_discrete(limits = c("d16","d21"))
6、坐标轴的缩放和变换
有时数据的分布较为极端,可能需要对坐标轴进行缩放或变换,ggplot2提供了很多坐标轴变换的方法,如对数变换。
- 对数变换:使用
scale_x_log10()或scale_y_log10()对数据进行对数缩放,适合于处理呈指数增长的数据。
ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +scale_x_log10() # 对x轴进行对数缩放
7、修改坐标轴标签的外观
ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) +geom_bar(position = "dodge",stat = "identity") +theme(axis.title.x = element_text(face = "italic",colour = "darkred",size = 14))
8、移除坐标轴的标签
ggplot(cabbage_exp,aes(x = Date,y = Weight,fill = Cultivar)) +geom_bar(position = "dodge",stat = "identity") +theme(axis.title.x = element_blank())
二、刻度线的设置
1、修改刻度线的位置
可以通过breaks参数来控制坐标轴的刻度位置,指定在x轴或y轴上应该显示的刻度值。你可以指定一系列的数字作为刻度。
ggplot(mtcars, aes(x = wt, y = mpg)) +geom_point() +scale_x_continuous(breaks = seq(2, 6, by = 1)) + # x轴每隔1个单位显示一个刻度scale_y_continuous(breaks = seq(10, 35, by = 5)) # y轴每隔5个单位显示一个刻度
2、修改刻度线标签的文本
你可以通过labels参数自定义刻度标签。labels可以是任何类型的字符串向量,用来表示x轴或y轴的刻度标签。
ggplot(mtcars, aes(x = wt, y = factor(cyl))) +geom_point() +# 自定义x轴的刻度标签scale_x_continuous(breaks = seq(2, 6, by = 1),labels = c("Light", "Medium", "Heavy", "Very Heavy", "Extreme")) + # 自定义y轴的类别标签scale_y_discrete(labels = c("4" = "Four Cylinders", "6" = "Six Cylinders", "8" = "Eight Cylinders")) + # 设置 x 轴文本的旋转角度为 30 度theme(axis.text.x = element_text(angle = 30))
3、移除刻度线的标签
ggplot(mtcars, aes(x = wt, y = factor(cyl))) +geom_point() + theme(axis.text.y = element_blank())
0x02 图例
1、修改图例的标题
在ggplot2中,图例通常是根据美学映射(如颜色、形状、大小等)自动生成的。你可以通过labs()函数自定义图例的标题。
library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) + # 通过气缸数映射颜色geom_point(size = 3) +labs(color = "Number of Cylinders") # 设置图例标题
2、修改图例的位置
可以使用theme()函数中的legend.position参数来控制图例的位置。位置可以是“top”、“bottom”、“left”、“right”,或指定坐标位置。
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +geom_point(size = 3) +theme(legend.position = "bottom") # 将图例移到图的底部
你也可以使用坐标来精确控制图例位置:
theme(legend.position = c(0.8, 0.2)) # x = 0.8, y = 0.2
3、图例的样式自定义
你可以通过theme()函数对图例的样式进行详细调整,包括字体大小、背景颜色、边框等。
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +geom_point(size = 3) +theme(legend.title = element_text(size = 12, face = "bold"), # 图例标题字体legend.text = element_text(size = 10), # 图例文本字体legend.background = element_rect(fill = "lightgray", size = 0.5, linetype = "solid") # 图例背景)
3、修改图例的标签文字
要更改图例标签文字,你可以在美学映射中使用scale_*函数的labels参数。这可以针对特定的美学(如颜色、形状等)进行设置。
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +geom_point(size = 3) +scale_color_discrete(labels = c("4 Cylinders", "6 Cylinders", "8 Cylinders")) + # 自定义图例标签labs(color = "Number of Cylinders")
4、调整图例的顺序
要调整图例的顺序,可以在美学映射中将变量转换为有序因子(factor),并设置levels参数来指定显示顺序。
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +geom_point(size = 3) +scale_color_discrete(labels = c("8 Cylinders", "6 Cylinders", "4 Cylinders")) + # 自定义图例标签labs(color = "Number of Cylinders") +scale_color_manual(values = c("red", "green", "blue")) # 手动设置颜色顺序
如果想改变显示顺序,可以先将cyl转换为有序因子:
mtcars$cyl <- factor(mtcars$cyl, levels = c(8, 6, 4)) # 设置顺序ggplot(mtcars, aes(x = wt, y = mpg, color = cyl)) +geom_point(size = 3) +labs(color = "Number of Cylinders") # 保留标签不变
也可以使用guides(fill = guide_legend(reverse = TRUE))反转图例项的顺序:
# 创建示例数据
data <- data.frame(category = c("A", "B", "C"),value = c(10, 20, 15),fill = c("Group 1", "Group 2", "Group 1")
)# 绘图
ggplot(data, aes(x = category, y = value, fill = fill)) +geom_bar(stat = "identity") +guides(fill = guide_legend(reverse = TRUE)) # 反转图例顺序
同理也可以这样使用:
# 创建示例数据
data <- data.frame(category = c("A", "B", "C"),value = c(10, 20, 15),fill = c(TRUE, FALSE, TRUE)
)# 绘图
ggplot(data, aes(x = category, y = value, fill = factor(fill))) +geom_bar(stat = "identity") +scale_fill_discrete(breaks = c('TRUE', 'FALSE')) # 控制图例显示的类别
5、移除图例的标题
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +geom_point(size = 3) +theme(legend.title = element_blank())
6、图例的移除
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +geom_point(size = 3) +guides(color = "none")
相关文章:
R语言绘图——坐标轴及图例
掌握坐标轴与图例的设置与调整,对于提升数据可视化的清晰度和可读性至关重要。通过这些工具,可以有效地传达数据背后的故事,提高图表的表现力。 0x01 坐标轴 一、坐标轴的设置 1、修改坐标轴的标签 在ggplot2中,坐标轴是根据数…...
JDK中socket源码解析
目录 1、Java.net包 1. Socket通信相关类 2. URL和URI处理类 3. 网络地址和主机名解析类 4. 代理和认证相关类 5. 网络缓存和Cookie管理类 6. 其他网络相关工具类 2、什么是socket? 3、JDK中socket核心Api 4、核心源码 1、核心方法 2、本地方法 3、lin…...
Ansible自动化运维项目实战指南
Ansible自动化运维项目实战指南 在当今快速发展的IT环境中,运维工作的复杂性和规模性日益增加,传统的手动运维方式已难以满足高效、可靠、可重复性的需求。Ansible作为一款开源的自动化运维工具,凭借其简单易用、无需代理、基于SSH的架构特性…...
MySQL【知识改变命运】10
联合查询 0.前言1.联合查询在MySQL里面的原理2.练习一个完整的联合查询2.1.构造练习案例数据2.2 案例:⼀个完整的联合查询的过程2.2.1. 确定参与查询的表,学⽣表和班级表2.2.2. 确定连接条件,student表中的class_id与class表中id列的值相等2.…...
Java学习教程,从入门到精通, Java 基础语法(4)
1、Java 基础语法 一、Java 简介与开发环境搭建 Java 简介:Java 是一种面向对象的编程语言,具有跨平台、安全、稳定等特点。Java 主要应用于企业级应用、Android 应用开发、大数据处理等领域。开发环境搭建:搭建 Java 开发环境需要安装 JDK…...
反编译工具-Jclasslib的使用,与Java方法调用的探索
这里写目录标题 前言IDEA下查看字节码的两种方法使用idea自带的插件工具安装插件 为什么没有看出方法调用关系原因分析工厂举例 知识补充语言java可移植性 总结 前言 画时序图的时候,我想验证下方法的调用是否写的正确。方法调用不仅涉及到程序的基本逻辑流程&#…...
力扣 简单 876.快慢指针
文章目录 题目介绍题解 题目介绍 题解 class Solution {public ListNode middleNode(ListNode head) {ListNode slow head, fast head;while(fast ! null && fast.next ! null){slow slow.next;fast fast.next.next;}return slow;} }...
FineReport 计算同比增长
1、数据库查询 SELECTt1.年,t1.月,t1.总金额 AS 同期金额,t1.仓库名称,t2.总金额 AS 上期金额 FROMtest t1LEFT JOIN test t2 ON ( t1.年 t2.年 1 ) AND t1.月 t2.月 AND t1.仓库名称 t2.仓库名称2、配置字段 月份字段加后缀 月 数据列加后缀 计算同比增长率 if(LEN(B3)0 …...
从0开始深度学习(12)——多层感知机的逐步实现
依然以Fashion-MNIST图像分类数据集为例,手动实现多层感知机和激活函数的编写,大部分代码均在从0开始深度学习(9)——softmax回归的逐步实现中实现过 1 读取数据 import torch from torchvision import transforms import torchv…...
如何利用OpenCV和yolo实现人脸检测
在之前的blog里面,我们有介绍OpenCV和yolo的区别,本文就人脸检测为例,分别介绍下OpenCV和yolo的实现方式。 OpenCV实现人脸检测 一、安装 OpenCV 首先确保你已经安装了 OpenCV 库。可以通过以下方式安装: 使用包管理工具安装&…...
015集——c# 实现CAD excel交互(CAD—C#二次开发入门)
第一步:添加引用 程序集—>扩展 namespace WindowsFormsApp2 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}private void 获取当前excel_Click(object sender, EventArgs e…...
【计网笔记】以太网
经典以太网 总线拓扑 物理层 Manchester编码 数据链路层 MAC子层 MAC帧 DIX格式与IEEE802.3格式 IEEE802.3格式兼容DIX格式 前导码(帧开始定界符SOF) 8字节 前7字节均为0xAA第8字节为0xAB前7字节的Manchester编码将产生稳定方波,用于…...
Java 入门基础篇14 - java面向对象思想以及特性
学习目标: 一、目标 面向对象思想类和对象对象的创建和使用属性和方法封装 开始学习: 二、编程思想 2.1 什么是编程思想 做人有做人的原则,编程也有编程的原则。这些编程的原则,就叫做编程思想。 2.2 面向过程和面向对象 二…...
第15篇:网络架构优化与综合案例分析
目录 引言 15.1 网络性能优化的方法与工具 15.1.1 带宽管理与流量控制 15.1.2 负载均衡 15.1.3 缓存优化 15.2 网络故障的排查与解决 15.2.1 常用的网络故障排查工具 15.2.2 网络故障排查案例 15.3 网络安全架构的综合设计案例 15.3.1 企业网络安全架构的要求 15.3.…...
UI自动化测试实战
补充:Selenium主要用于Web页面的自动化测试,它可以模拟用户的各种操作,如点击、输入、滚动等,来测试网页的功能。而Appium是一个开源的移动端自动化测试工具。 一、自动化测试实战章节 自动化测试流程测试用例编写项目自动化测试…...
东方智者颜廷利:以哲学思想促进世界和谐与无私奉献
【本社讯】在全球化的今天,东方智慧与哲学思想正逐渐成为促进世界和谐与理解的重要力量。近日,祖籍齐鲁大地山东济南的东方智者颜廷利以其深邃的哲学思想和对人类社会的深刻洞察,引起了国际社会的广泛关注。 颜廷利,一位致力于哲学研究与实践的智者,他的思想跨越古今,融合了东…...
基于 springboot vue停车场管理系统 设计与实现
博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…...
如何验证ssl私钥和证书是否匹配?
从证书(CRT)文件提取公钥 openssl x509 -in server.crt -pubkey -noout | openssl sha256从证书签名请求(CSR)文件提取公钥 openssl req -in server.csr -pubkey -noout | openssl sha256从私钥(KEY)文件…...
MongoDB的基本操作
🌷数据库准备 🎈Mongoshell 1.在指定目录下创建mongodb文件夹、其子文件log和data以及mongodb.log cd /home/ubuntu mkdir -p mongodb/data mkdir -p mongodb/log touch mongodb/log/mongodb.log 执行mongodb命令启动mongdb服务 mongod --dbpath /h…...
spring mvc后端实现过程
文章目录 一、Spring mvc1、controller1.1、LoginController011.2、LoginController 2、service2.1、LoginService2.1、LoginInimplements 3、dao3.1、LoginMapper3.1、LoginMapper.xml 4、实体类 一、Spring mvc 1、controller 控制器层、处理用户的请求和响应, …...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
