如何用R语言ggplot2画折线图

文章目录

  • 前言
  • 一、数据集
  • 二、ggplot2画图
    • 1、全部代码
    • 2、细节拆分
      • 1)导包
      • 2)创建图形对象
      • 3)主题设置
      • 4)轴设置
      • 5)图例设置
      • 6)颜色
      • 7)保存图片


前言

在这里插入图片描述


一、数据集

数据下载链接见文章顶部

数据:

在这里插入图片描述

library(readxl)data <- read_excel("fig3_line.xlsx", sheet = "Sheet1")

二、ggplot2画图

1、全部代码

library(ggplot2)pic =ggplot(data, aes(x = x, y = y, group = Species, color = Species)) +geom_line(linewidth = 1.5) +# 主题设置theme_classic() +# 轴设置theme(axis.text = element_text(size = 20)) +theme(axis.title = element_text(size = 22)) +coord_cartesian(xlim = c(0, 10)) +ylab("Percent") +xlab("Production") +scale_y_continuous(labels = scales::percent) +scale_x_continuous(breaks = seq(0, 10, by = 2)) +# 图例设置theme(legend.title = element_blank()) +theme(legend.text = element_text(size = 18, face = "italic")) + theme(legend.position = c(.68, .78)) +# 颜色scale_color_manual(values = c('#73c0de', '#5470C6', '#3ba272', '#fac858', '#ee6666', '#fc8452', '#9a60b4', '#ea7ccc'))jpeg(filename = "test3.png", width = 3300, height = 3000, res = 600, quality = 100)
pic
dev.off()

2、细节拆分

1)导包

library(ggplot2)

2)创建图形对象

pic =ggplot(data, aes(x = x, y = y, group = Species, color = Species)) +geom_line(linewidth = 1.5)
  • 设置 x 轴为列 x,y 轴为列 y,按物种类型为线条着色。
  • geom_line 用于绘制线图,并通过 linewidth = 1.5 参数设置线条的宽度为1.5个单位(毫米)。在老版本的 ggplot2 中是通过 size 参数调整线宽的,即 size = 1.5,而在新版本中,推荐用 linewidth 替换 size。

3)主题设置

theme_classic()
  • theme_classic 指定经典主题。

4)轴设置

theme(axis.text = element_text(size = 20)) +
theme(axis.title = element_text(size = 22)) +
coord_cartesian(xlim = c(0, 10)) +
ylab("Percent") +
xlab("Production") +
scale_y_continuous(labels = scales::percent) +
scale_x_continuous(breaks = seq(0, 10, by = 2)) +
  • 设置轴刻度字号20,轴标题字号22。
  • coord_cartesian(xlim = c(0, 10)) 用于限制 x 轴坐标轴的范围,只显示从0到10的区间。这意味着即使数据中存在超出这个范围的值,图形也只会显示在这个范围内。该函数与xlim(0, 10)的区别是:xlim 函数会先删除超出范围的数据点再绘制;而 coord_cartesian 函数会用所有的点绘制,但只展示 y∈[0,10] 区间的图像。在本图中用这两个函数绘制效果没有区别,但在绘制箱线图时,这两个函数绘制的图中中位数和四分位点可能截然不同。
  • xlab 设置 x 轴标题,ylab 设置 x 轴标题。
  • scale_y_continuous() 函数用于设置y轴的连续型变量的比例尺。
    labels = scales::percent 表示将y轴的标签格式化为百分比形式,即将数值乘以100并加上百分号符号。
  • scale_x_continuous() 函数用于设置x轴的连续型变量的比例尺。
    breaks = seq(0, 10, by = 2) 表示设置x轴刻度的位置。在这个例子中,刻度位置从0开始,每隔2个单位设置一个刻度,一直到10。

5)图例设置

theme(legend.title = element_blank()) +
theme(legend.text = element_text(size = 18, face = "italic")) + 
theme(legend.position = c(.68, .78))
  • 设置图例标题为空。
  • 设置图例字体为18号斜体。
  • .68 和 .78 即 0.68 和 0.78,表示图例中心点位置相对于整个图表的坐标系的百分比。

6)颜色

scale_color_manual(values = c('#73c0de', '#5470C6', '#3ba272', '#fac858', '#ee6666', '#fc8452', '#9a60b4', '#ea7ccc'))
  • 分别为每个物种类别的线条指定颜色。

7)保存图片

jpeg(filename = "test3.png", width = 3300, height = 3000, res = 600, quality = 100)
pic
dev.off()
  • jpeg 函数打开了一个JPEG设备,设定了图片的保存路径为 “test3.png”,图片的宽度为3300像素,高度为3000像素,分辨率为600 dpi,图片质量为100%。
  • pic 是之前生成的图形对象。
  • dev.off() 关闭了之前打开的图形设备,保存了图片到指定路径。这是在完成图片保存后必须执行的步骤,以确保保存的图片被正确地输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/26063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建

STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建 文章目录 STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建功能与作用典型工作流程 1. 硬件原理图介绍2. STM32 CubeMX工程搭建2.1 创建工程2.2 系统配置2.3 USART串口配…

tokenization(一)概述

文章目录 背景基于词&#xff08;Word-based&#xff09;基于字符&#xff08;Character-based&#xff09;子词词元化&#xff08;Subword tokenization&#xff09; 背景 tokenization是包括大语言模型在内所有自然语言处理的任务的基础步骤&#xff0c;其目标是将文本数据转…

【面试干货】聚集索引和非聚集索引区别?

【面试干货】聚集索引和非聚集索引区别? 1、聚集索引&#xff08;Clustered Index&#xff09;1.1 特点1.2 例子 2、非聚集索引&#xff08;Nonclustered Index&#xff09;2.1 特点2.2 例子 3、根本区别 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&…

Sklearn的安装和用法

安装sklearn相对简单&#xff0c;因为它是一个Python库&#xff0c;可以通过Python的包管理器pip来安装。 Windows、macOS和Linux通用步骤&#xff1a; 确保Python已安装&#xff1a; sklearn是基于Python的&#xff0c;所以首先确保你的计算机上安装了Python。推荐使用Pytho…

NLP——电影评论情感分析

python-tensorflow2.0 numpy 1.19.1 tensorflow 2.0.0 导入库 数据加载 数据处理 构建模型 训练 评估 预测 1.基于2层dropout神经网络 2.基于LSTM的网络 #导入需要用到的库 import os import tarfile import urllib. request import tensorflow as tf import numpy a…

5W-35W-150W-300W-500W铝壳功率电阻器

带铝制外壳的电阻器 EAK采用铝型材的导线电阻器将久经考验的导线材料的高脉冲稳定性与优化的导热和高度保护相结合。安装在导热表面上可进一步改善散热并提高稳定性。 连接线有各种长度和材料可供选择。可选配集成温度开关。也可根据客户要求提供定制组件。 该产品有多种版本…

【代码随想录训练营】【Day 46】【动态规划-6】| Leetcode 518, 377

【代码随想录训练营】【Day 46】【动态规划-6】| Leetcode 518, 377 需强化知识点 完全背包基础&#xff08;遍历重量时 正序&#xff0c;保证物品可重复加入&#xff09;完全背包&#xff1a;组合问题&#xff0c;先物品后重量&#xff0c;排列问题&#xff0c;先重量后物品…

CVE-2023-37474(目录遍历)

靶场简介 Copyparty是一个可移植的文件服务器。在1.8.2版本之前的版本存在一个CTF技巧&#xff0c;该漏洞位于.cpr子文件夹中。路径遍历攻击技术允许攻击者访问位于Web文档根目录之外的文件、目录. 靶场 进入靶场 根据简介访问.cpr目录 使用curl命令访问etc/passwd文件 确定…

Vim 快捷键

本文翻译自&#xff1a;https://devhints.io/vim 文章目录 1、BasicExitingExiting insert mode 2、编辑编辑剪切板Visual 模式在可视模式下 查找和替换 3、导航方向单词线性格文件窗口搜索 4、操作符用法操作符列表例子 5、文本对象用法文本对象例子差异 6、杂项标签页折叠导航…

kettle_Hbase

kettle_Hbase ☀Hbase学习笔记 读取hdfs文件并将sal大于1000的数据保存到hbase中 前置说明&#xff1a; 1.需要配置HadoopConnect 将集群中的/usr/local/soft/hbase-1.4.6/conf/hbase-site.xml复制至Kettle中的 Kettle\pdi-ce-8.2.0.0-342\data-integration\plugins\pentah…

8.1 基本打印功能

本文仅供学习交流&#xff0c;严禁用于商业用途&#xff0c;如本文涉及侵权请及时联系本人将于及时删除 在使用“MFC应用”项目模板生成应用程序的过程中&#xff0c;如果在“高级功能”窗口中不取消对打印和打印预览的设置&#xff0c;那么应用程序就已经具备了简单的打印和打…

MySQL—多表查询—练习(2)

一、引言 接着上篇博客《 MySQL多表查询——练习&#xff08;1&#xff09;》继续完成剩下的案例需求。 二、案例 &#xff08;0&#xff09;三张表&#xff08;员工表、部门表、薪资等级表&#xff09; 员工表&#xff1a;emp 部门表&#xff1a;dept 薪资等级表&#xff1a;…

让GNSSRTK不再难【第二天-第7部分2】

状态更新计算过程&#xff1a; 计算卡尔曼增益&#xff1a; 根据预测的误差协方差矩阵 P k − P_k^- Pk−​ 和观测噪声协方差矩阵 R R R 计算卡尔曼增益 K k K_k Kk​&#xff1a; K k P k − H T ( H P k − H T R ) − 1 K_k P_k^- H^T (H P_k^- H^T R)^{-1} Kk​Pk…

使用 PlatformIO 将文件上传到 ESP32-S3 的 SPIFFS 文件系统

PlatformIO环境 将文件上传到 ESP32-S3 的 SPIFFS 文件系统 介绍&#xff1a; PlatformIO 是一个流行的开发平台&#xff0c;用于编写、构建和上传嵌入式项目。ESP32-S3 是 Espressif 推出的一款功能强大的嵌入式开发板&#xff0c;具有丰富的外设和通信接口。本文将介绍如何…

前端 JS 经典:动态执行 JS

前言&#xff1a;怎么将字符串当代码执行。有 4 中方式实现 eval、setTimeout、创建 script 标签、new Function 1. eval 特点&#xff1a;同步执行&#xff0c;当前作用域 var name "yq"; function exec(string) {var name "yqcoder";eval(string); …

「C系列」C 数组

文章目录 一、C 数组1. 声明数组2. 初始化数组3. 访问数组元素4. 数组越界5. 多维数组 二、C 操作数组的方法有哪些三、C 数组-应用场景1. 存储固定数量的数据2. 实现算法&#xff08;如排序&#xff09;3. 处理数据集合 四、相关链接 一、C 数组 在C语言中&#xff0c;数组是…

Java 类与对象 -- Java 语言的类与对象、构造器、static、final、包和 JAR

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 006 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…

认识Spring中的BeanFactoryPostProcessor

先看下AI的介绍 在Spring 5.3.x中&#xff0c;BeanFactoryPostProcessor是一个重要的接口&#xff0c;用于在Spring IoC容器实例化任何bean之前&#xff0c;读取bean的定义&#xff08;配置元数据&#xff09;&#xff0c;并可能对其进行修改。以下是关于BeanFactoryPostProce…

【学习笔记】finalshell上传文件夹、上传文件失败或速度为0

出现标题所述的情况&#xff0c;大概率是finalshell上传文件的过程中的权限不够。 可参照&#xff1a;Finalshell上传文件失败或者进度总为百分之零解决方法 如果不成功&#xff0c;建议关闭客户端重试。 同时建议在设置finalshell的ssh连接时根据不同用户设置多个连接&#xf…

OJ刷题——2086.AI=?、2087.剪花布条、KPM算法

2086.AI&#xff1f; 题目描述 Problem - 2086 运行代码 #include <iostream> #include <cstdio> using namespace std; const int N 3005; int main() {int n;double Ao, An;double num[N];while (cin>>n) {cin >> Ao>>An;for (int i 1; i…