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

R语言的ggplot2绘制分组折线图?

R绘制分组折线图.R

首先看数据情况:group有3组。Time有3组,数据意思是在3组3个时间点测量了某指标,现在要绘制组1、组2、组3某指标y按时间的变化趋势

数据情况:

看看最终的效果图如下:

下面是本次使用的代码

.libPaths()

setwd("C:/Users/12974/Desktop/百度经验/03图形绘制/03R绘制分组折线图")#设置工作空间
getwd()#加载工作空间

##导入数据
data1<-read.csv("C:/Users/12974/Desktop/百度经验/03图形绘制/03R绘制分组折线图/data.csv",
                as.is = TRUE,header = T,sep = ",", fileEncoding='utf-8')

#加载包
library(ggplot2)
library(ggsci)#画图颜色的包
#处理数据,将分类变量变为分类的
data1$group<-as.factor(data1$group)
p1<-ggplot(data = data1,
       aes(x=时间,    #x轴变量
           y=y,        #y轴变量
           group=group, #分组变量
           color=group))+
  geom_point(size=2)+
  geom_line(size=1)

#美化
p1<-p1+
  labs(x="时间",y="均值")+#坐标名称
  scale_fill_lancet()+#表示用lancet里面的颜色随机填充线条
  scale_color_lancet()+#表示用lancet里面的颜色随机填充线条
  theme_bw()+ #去掉背景灰色
  theme(panel.grid = element_blank())+ #删除背景网格
  scale_color_manual(
    values = c("1" = "#bd2628",  
               "2" = "#B09C85FF",
               "3" = "#4DBBD5FF"))

p1

#另外还可以选择组1、组2、组3其中两组作图
library(dplyr)#这个包加载了才能用下面的函数

#筛选group=1和group=2
data12<- data1 %>%
     filter(group %in% c("1", "2"))
#筛选group=1和group=3
data13<- data1 %>%
  filter(group %in% c("1", "3"))
#筛选group=2和group=3
data23<- data1 %>%
  filter(group %in% c("2", "3"))

#绘制group=1和group=2
p12<-ggplot(data = data12,
           aes(x=时间,    #x轴变量
               y=y,        #y轴变量
               group=group, #分组变量
               color=group))+
  geom_point(size=2)+
  geom_line(size=1)
#美化
p12<-p12+
  labs(x="时间",y="均值")+#坐标名称
  scale_fill_lancet()+#表示用lancet里面的颜色随机填充线条
  scale_color_lancet()+#表示用lancet里面的颜色随机填充线条
  theme_bw()+ #去掉背景灰色
  theme(panel.grid = element_blank())+ #删除背景网格
  scale_color_manual(
    values = c("1" = "#bd2628",  
               "2" = "#B09C85FF",
               "3" = "#4DBBD5FF"))

p12

#绘制group=1和group=3
p13<-ggplot(data = data13,
            aes(x=时间,    #x轴变量
                y=y,        #y轴变量
                group=group, #分组变量
                color=group))+
  geom_point(size=2)+
  geom_line(size=1)
#美化
p13<-p13+
  labs(x="时间",y="均值")+#坐标名称
  scale_fill_lancet()+#表示用lancet里面的颜色随机填充线条
  scale_color_lancet()+#表示用lancet里面的颜色随机填充线条
  theme_bw()+ #去掉背景灰色
  theme(panel.grid = element_blank())+ #删除背景网格
  scale_color_manual(
    values = c("1" = "#bd2628",  
               "2" = "#B09C85FF",
               "3" = "#4DBBD5FF"))

## Scale for colour is already present.
## Adding another scale for colour, which will replace the existing scale.

p13

#绘制group=2和group=3
p23<-ggplot(data = data23,
            aes(x=时间,    #x轴变量
                y=y,        #y轴变量
                group=group, #分组变量
                color=group))+
  geom_point(size=2)+
  geom_line(size=1)
#美化
p23<-p23+
  labs(x="时间",y="均值")+#坐标名称
  scale_fill_lancet()+#表示用lancet里面的颜色随机填充线条
  scale_color_lancet()+#表示用lancet里面的颜色随机填充线条
  theme_bw()+ #去掉背景灰色
  theme(panel.grid = element_blank())+ #删除背景网格
  scale_color_manual(
    values = c("1" = "#bd2628",  
               "2" = "#B09C85FF",
               "3" = "#4DBBD5FF"))

p23

##保存图片
ggsave(filename = "p1.png",#命名
       plot=p1,#哪张图
       units="px",
       width = 1200,#宽度
       height = 600 #高度
)

ggsave(filename = "p12.png",#命名
       plot=p12,#哪张图
       units="px",
       width = 1200,#宽度
       height = 600 #高度
)

ggsave(filename = "p13.png",#命名
       plot=p13,#哪张图
       units="px",
       width = 1200,#宽度
       height = 600 #高度
)

ggsave(filename = "p23.png",#命名
       plot=p23,#哪张图
       units="px",
       width = 1200,#宽度
       height = 600 #高度
)

相关文章:

R语言的ggplot2绘制分组折线图?

R绘制分组折线图.R 首先看数据情况&#xff1a;group有3组。Time有3组&#xff0c;数据意思是在3组3个时间点测量了某指标&#xff0c;现在要绘制组1、组2、组3某指标y按时间的变化趋势 数据情况&#xff1a; 看看最终的效果图如下&#xff1a; 下面是本次使用的代码 .libPat…...

[C#]winform部署官方yolov8-obb旋转框检测的onnx模型

【官方框架地址】 https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov8-obb&#xff08;You Only Look Once version 8 with Oriented Bounding Boxes&#xff09;是一种先进的对象检测算法&#xff0c;它在传统的Yolov3和Yolov4基础上进行了优化&#xff0c;加…...

Git中config配置

文章目录 简介一、config级别二、config基本配置 简介 Git是一个开源的分布式版本控制系统&#xff0c;用于处理各种规模的项目版本管理。它由Linus Torvalds设计&#xff0c;主要用于Linux内核开发。Git的特点包括速度、简单的设计、对非线性开发模式的支持、完全的分布式能力…...

Java开发安全之:Unreleased Resource: Streams需确保流得到释放

Overview java 中的函数 getResponseBytes() 有时无法成功释放由 getInputStream() 函数分配的系统资源。 Details 程序可能无法成功释放某一项系统资源。 在这种情况下&#xff0c;在某些程序路径上&#xff0c;所分配的资源未释放。 资源泄露至少有两种常见的原因&#xf…...

【C++】文件操作

文件操作 一、文本文件&#xff08;一&#xff09;写文件读文件 二、二进制文件&#xff08;一&#xff09;写文件&#xff08;二&#xff09;读文件 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放&#xff0c;通过文件可以将数据持久化&#xff…...

高效能方法 - 任务清单优先级

任务清单是有优先级的&#xff0c;首先要尽所能保证A级别的事项完成&#xff0c;或许不能估计B级或者C级&#xff0c;那这结果也是不错的。 博恩崔西在《吃掉那只青蛙》一书中指出&#xff1a;在你决定要做什么&#xff0c;并对其进行排序的时候&#xff0c;你首要解决那些最难…...

go 语言爬虫库goquery介绍

文章目录 爬虫介绍goquery介绍利用NewDocumentFromReader方法获取主页信息Document介绍通过查询获取文章信息css选择器介绍goquery中的选择器获取主页中的文章链接 爬取总结 爬虫介绍 爬虫&#xff0c;又称网页抓取、网络蜘蛛或网络爬虫&#xff0c;是一种自动浏览互联网并从网…...

解决 Navicat 在笔记本外接显示器分辨率自适应展示问题

前言 有时候我们使用自己的笔记本电脑会外接一个显示器&#xff0c;但是显示器的分辨率和笔记本又不一样&#xff0c;所以就会导致 Navicat 基于分辨率的问题变得字体很小。具体操作可点击这里&#xff1a; Navicat 分辨率调整...

网络安全产品之认识入侵检测系统

随着计算机网络技术的快速发展和网络攻击的不断增多&#xff0c;单纯的防火墙策略已经无法满足对安全高度敏感的部门的需要&#xff0c;网络的防卫必须采用一种纵深的、多样的手段。因此&#xff0c;入侵检测系统作为新一代安全保障技术&#xff0c;成为了传统安全防护措施的必…...

牛客周赛 Round 10 解题报告 | 珂学家 | 三分模板 + 计数DFS + 回文中心扩展

前言 整体评价 T2真是一个折磨人的小妖精&#xff0c;写了两版DFS&#xff0c;第二版计数DFS才过。T3是三分模板&#xff0c;感觉也可以求导数。T4的数据规模才n1000&#xff0c;因此中心扩展的 O ( n 2 ) O(n^2) O(n2)当仁不让。 A. 游游的最长稳定子数组 滑窗经典题 从某个…...

SpringBoot 更新业务场景下,如何区分null是清空属性值 还是null为vo属性默认值?

先看歧义现象 值为null 未传递此属性 所以此时如何区分null 时传递进来的的null&#xff0c;还是属性的默认值null? 引入方案 引入过滤器&#xff0c;中间截获requestBodyData并保存到HttpServletRequest&#xff0c;业务层从HttpServletRequest 获取到requestBodyData辅…...

【深度学习每日小知识】NLP 自然语言处理

自然语言处理 (NLP) 是人工智能 (AI) 的一个子领域&#xff0c;处理计算机和人类&#xff08;自然&#xff09;语言之间的交互。它涉及使用算法和统计模型使计算机能够理解、解释和生成人类语言。 NLP 是人工智能领域的重要工具&#xff0c;广泛应用于语言翻译、文本分类和聊天…...

一文理解Python选择语句

在编程领域中&#xff0c;条件判断和选择是非常基础而且重要的一个部分。Python 作为一种被广泛应用的编程语言&#xff0c;提供了多种选择语句来满足不同的条件判断需求。本文将深入探讨 Python 中的选择语句&#xff0c;包括 if 语句、elif 语句、else 语句、简写的条件表达式…...

MyBatis XML 映射文件中的 SQL 语句可以分为动态语句和静态语句

目录 静态查询&#xff1a; 动态查询&#xff1a; 静态更新&#xff1a; 动态更新&#xff1a; 静态删除&#xff1a; 动态删除&#xff1a; 动态语句和静态语句在 MyBatis 中的作用如下&#xff1a; 静态查询&#xff1a; 静态查询是指在 SQL 语句中执行固定的查询操作…...

Flask用于生产环境

Flask是一个用Python编写的轻量级Web应用框架&#xff0c;可以用于开发和部署Web服务。要安装Flask&#xff0c;您需要以下步骤&#xff1a; - 安装Python和pip&#xff0c;如果您还没有的话。 - 创建一个虚拟环境&#xff0c;以便隔离您的Flask应用程序和其他Python项目。 - …...

程序员如何向上管理,升职加薪

向上管理 多向领导展示自己的工作量。 解决完问题&#xff0c;可以把领导拉到群里&#xff0c;不然你解决了问题&#xff0c;领导都不知道。 积极向领导汇报&#xff0c;及时反馈任务进度&#xff0c;反馈遇到的问题。 要学会表现自己&#xff0c;光说不干假把式&#xff0c;…...

Microsoft Word 删除空行

Microsoft Word 删除空行 1. 删除空行1.1. 替换1.2. 段落标记 References 1. 删除空行 1.1. 替换 1.2. 段落标记 特殊格式 -> 段落标记 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/...

基于一次应用卡死问题所做的前端性能评估与优化尝试

问题背景 在上个月&#xff0c;由于客户反馈客户端卡死现象但我们远程却难以复现此现象&#xff0c;于是我们组织了一次现场上门故障排查&#xff0c;并希望基于此次观察与优化&#xff0c;为客户端开发提供一些整体的优化升级。当然&#xff0c;在尝试过程中&#xff0c;也发…...

JVM(上)

目录 一、JVM概述 一、JVM作用 二、JVM整体组成部分 二、JVM结构-类加载 一、类加载子系统概述 二、类加载过程 1.加载 2.链接 3.初始化&#xff08;类加载过程中的初始化&#xff09; 三、类加载器分类 大致分两类&#xff1a; 细致分类&#xff1a; 四、双亲委派机制 五、打…...

【js】js 异步机制详解 Generator / Async / Promise

三种语法功能放在一起&#xff0c;是因为他们都有相似特点&#xff1a; 维护某种状态在未来恢复状态并执行 本文重点回答以下几个问题&#xff1a; 为什么 Generator 和 Async 函数的 代码执行流 都可以简化成树形结构&#xff1f;async 函数为什么返回一个 promise&#xf…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...