当前位置: 首页 > 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; …...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...