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

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轴的显示范围

也可以通过xlimylim来控制。

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语言绘图——坐标轴及图例

掌握坐标轴与图例的设置与调整&#xff0c;对于提升数据可视化的清晰度和可读性至关重要。通过这些工具&#xff0c;可以有效地传达数据背后的故事&#xff0c;提高图表的表现力。 0x01 坐标轴 一、坐标轴的设置 1、修改坐标轴的标签 在ggplot2中&#xff0c;坐标轴是根据数…...

JDK中socket源码解析

目录 1、Java.net包 1. Socket通信相关类 2. URL和URI处理类 3. 网络地址和主机名解析类 4. 代理和认证相关类 5. 网络缓存和Cookie管理类 6. 其他网络相关工具类 2、什么是socket&#xff1f; 3、JDK中socket核心Api 4、核心源码 1、核心方法 2、本地方法 3、lin…...

Ansible自动化运维项目实战指南

Ansible自动化运维项目实战指南 在当今快速发展的IT环境中&#xff0c;运维工作的复杂性和规模性日益增加&#xff0c;传统的手动运维方式已难以满足高效、可靠、可重复性的需求。Ansible作为一款开源的自动化运维工具&#xff0c;凭借其简单易用、无需代理、基于SSH的架构特性…...

MySQL【知识改变命运】10

联合查询 0.前言1.联合查询在MySQL里面的原理2.练习一个完整的联合查询2.1.构造练习案例数据2.2 案例&#xff1a;⼀个完整的联合查询的过程2.2.1. 确定参与查询的表&#xff0c;学⽣表和班级表2.2.2. 确定连接条件&#xff0c;student表中的class_id与class表中id列的值相等2.…...

Java学习教程,从入门到精通, Java 基础语法(4)

1、Java 基础语法 一、Java 简介与开发环境搭建 Java 简介&#xff1a;Java 是一种面向对象的编程语言&#xff0c;具有跨平台、安全、稳定等特点。Java 主要应用于企业级应用、Android 应用开发、大数据处理等领域。开发环境搭建&#xff1a;搭建 Java 开发环境需要安装 JDK…...

反编译工具-Jclasslib的使用,与Java方法调用的探索

这里写目录标题 前言IDEA下查看字节码的两种方法使用idea自带的插件工具安装插件 为什么没有看出方法调用关系原因分析工厂举例 知识补充语言java可移植性 总结 前言 画时序图的时候&#xff0c;我想验证下方法的调用是否写的正确。方法调用不仅涉及到程序的基本逻辑流程&#…...

力扣 简单 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图像分类数据集为例&#xff0c;手动实现多层感知机和激活函数的编写&#xff0c;大部分代码均在从0开始深度学习&#xff08;9&#xff09;——softmax回归的逐步实现中实现过 1 读取数据 import torch from torchvision import transforms import torchv…...

如何利用OpenCV和yolo实现人脸检测

在之前的blog里面&#xff0c;我们有介绍OpenCV和yolo的区别&#xff0c;本文就人脸检测为例&#xff0c;分别介绍下OpenCV和yolo的实现方式。 OpenCV实现人脸检测 一、安装 OpenCV 首先确保你已经安装了 OpenCV 库。可以通过以下方式安装&#xff1a; 使用包管理工具安装&…...

015集——c# 实现CAD excel交互(CAD—C#二次开发入门)

第一步&#xff1a;添加引用 程序集—>扩展 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格式 前导码&#xff08;帧开始定界符SOF&#xff09; 8字节 前7字节均为0xAA第8字节为0xAB前7字节的Manchester编码将产生稳定方波&#xff0c;用于…...

Java 入门基础篇14 - java面向对象思想以及特性

学习目标&#xff1a; 一、目标 面向对象思想类和对象对象的创建和使用属性和方法封装 开始学习&#xff1a; 二、编程思想 2.1 什么是编程思想 做人有做人的原则&#xff0c;编程也有编程的原则。这些编程的原则&#xff0c;就叫做编程思想。 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自动化测试实战

补充&#xff1a;Selenium主要用于Web页面的自动化测试&#xff0c;它可以模拟用户的各种操作&#xff0c;如点击、输入、滚动等&#xff0c;来测试网页的功能。而Appium是一个开源的移动端自动化测试工具。 一、自动化测试实战章节 自动化测试流程测试用例编写项目自动化测试…...

东方智者颜廷利:以哲学思想促进世界和谐与无私奉献

【本社讯】在全球化的今天,东方智慧与哲学思想正逐渐成为促进世界和谐与理解的重要力量。近日,祖籍齐鲁大地山东济南的东方智者颜廷利以其深邃的哲学思想和对人类社会的深刻洞察,引起了国际社会的广泛关注。 颜廷利,一位致力于哲学研究与实践的智者,他的思想跨越古今,融合了东…...

基于 springboot vue停车场管理系统 设计与实现

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm 等开发框架&#xff09; vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…...

如何验证ssl私钥和证书是否匹配?

从证书&#xff08;CRT&#xff09;文件提取公钥 openssl x509 -in server.crt -pubkey -noout | openssl sha256从证书签名请求&#xff08;CSR&#xff09;文件提取公钥 openssl req -in server.csr -pubkey -noout | openssl sha256从私钥&#xff08;KEY&#xff09;文件…...

MongoDB的基本操作

&#x1f337;数据库准备 &#x1f388;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 控制器层、处理用户的请求和响应&#xff0c; …...

ThinkPHP3.x核心特性全解析

好的&#xff0c;我们来梳理一下 ThinkPHP 3.x 版本的主要特性&#xff1a;MVC 架构支持&#xff1a;严格遵循模型(Model)-视图(View)-控制器(Controller)的设计模式。清晰分离业务逻辑、数据操作和页面展示&#xff0c;便于协作开发和维护。路由支持&#xff1a;支持多种 URL …...

突破ThinkPad散热限制:TPFanCtrl2智能风扇控制完全指南

突破ThinkPad散热限制&#xff1a;TPFanCtrl2智能风扇控制完全指南 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 ThinkPad笔记本以其稳定性和性能在专业用户中享有盛…...

AI Agent的隐私保护设计:合规前提下的用户数据使用策略

AI Agent的隐私保护设计&#xff1a;合规前提下的用户数据使用策略引言 各位技术同行、AI应用开发者、产品经理以及对用户数据与智能交互边界敏感的读者朋友们&#xff0c;大家好&#xff01;我是深耕AI工程化落地与数据治理领域8年的技术博主「码海拾遗」。在过去的3年里&…...

如何快速上手libcds:10分钟掌握并发数据结构基础

如何快速上手libcds&#xff1a;10分钟掌握并发数据结构基础 【免费下载链接】libcds A C library of Concurrent Data Structures 项目地址: https://gitcode.com/gh_mirrors/li/libcds libcds是一个强大的C并发数据结构库&#xff0c;专为多线程环境设计&#xff0c;提…...

容器编排:Docker Compose与Kubernetes的适用场景

容器编排:Docker Compose与Kubernetes的适用场景 在容器化技术蓬勃发展的今天,容器编排工具的选择直接影响着应用的部署效率、运维复杂度和系统稳定性。Docker Compose与Kubernetes作为两大主流工具,分别在单机环境与分布式集群领域展现出独特优势。本文将结合真实项目经验…...

HTML怎么标注输入格式示例_HTML placeholder展示格式模板【技巧】

不能。placeholder属性值仅支持纯文本&#xff0c;HTML标签如<small>会被原样显示&#xff0c;不解析&#xff1b;它不支持样式、子元素或换行&#xff0c;且无法替代label实现无障碍访问&#xff0c;需用浮动label等结构替代。placeholder 里能写 HTML 吗不能。placehol…...

STM32标准库开发入门与GPIO控制实战

1. 从点灯开始&#xff1a;STM32标准库开发入门指南 作为一名嵌入式开发者&#xff0c;我始终记得第一次点亮LED时的兴奋感。那闪烁的小灯不仅标志着程序的成功运行&#xff0c;更代表着嵌入式世界的入门仪式。本文将带你从最基础的STM32标准库开发入手&#xff0c;逐步深入理解…...

Ubuntu 18.04安装后必做的5件事:换源、更新、装基础软件及常见问题修复

Ubuntu 18.04系统初始化优化指南&#xff1a;从零到高效工作环境 刚完成Ubuntu 18.04安装的新用户往往会面临一系列基础配置问题——从龟速的软件下载到缺失的日常应用&#xff0c;从分辨率异常到输入法卡顿。这些看似琐碎的问题实则构成了Linux入门的第一道门槛。本文将系统性…...

阶跃星辰 GUI-MCP 解读---(2)---决策层

本文是第二篇&#xff0c;主要是介绍决策层&#xff0c;本层在任何情况下&#xff08;是/非MCP&#xff09;都会用到。因为是反推解读&#xff0c;而且时间有限&#xff0c;所以可能会有各种错误&#xff0c;还请大家不吝指出。0x01 LocalServerLocalServer 是本地 GUI Agent 服…...

从理论到实践:剖析快速排序比较次数的优化边界

1. 快速排序的核心原理与比较次数 快速排序之所以被称为"快速"&#xff0c;核心在于它的分治策略。想象一下你正在整理一堆杂乱无章的书籍&#xff0c;最有效的方法可能是先选一个基准书&#xff08;比如按书名首字母&#xff09;&#xff0c;然后把其他书分成"…...