如何用R语言ggplot2画高水平期刊散点图

news2024/11/15 10:58:23

文章目录

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


前言

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、数据集

数据下载链接见文章顶部

处理前的数据:

在这里插入图片描述

library(readxl)
library(reshape2) # reshape2 包是 R 语言中的一个数据处理包,主要用于数据重塑(reshaping),提供了代码所需的 melt 函数。

data = read_excel("fig1_datasets.xlsx", sheet = "Sheet1")
data_melt = melt(data, id.vars = c("date"), variable.name = "fruit", value.name = "production")
data_melt = data_melt[data_melt$production != 0,]
data_melt$size = log(data_melt$production) # 构造 size 列用于表示散点大小,log 函数用于减少最大点和最小点的大小差异。

处理后的数据:
在这里插入图片描述


二、ggplot2画图

1、全部代码

library(ggplot2)
library(scales)

pic =
    ggplot(data_melt, aes(x = date, y = production, color = fruit, size = size)) +
    geom_point() +
    # 主题设置
    theme_bw() + 
    theme(panel.grid.major = element_line(linetype = 5)) +
    # 轴设置
    xlab("") +
    ylab("Production") +
    theme(axis.text = element_text(size = 19)) + 
    theme(axis.title = element_text(size = 22)) +
    scale_x_datetime(breaks = breaks_pretty(n = 8))+
    scale_y_log10(breaks = breaks_log(n = 10)) +
	# 图例设置
    guides(size = 'none') +
    guides(color = guide_legend(override.aes = list(size = 6))) +
    theme(legend.title = element_blank()) +
    theme(legend.text = element_text(size = 14, face = "italic")) +
    theme(legend.position = c(0.073, 0.765)) +
    theme(legend.background = element_rect(fill = NA, colour = NA)) +
    # 散点颜色
    scale_color_manual(values = c('#3ba272', '#91cc75', '#ea7ccc', '#9a60b4', '#ee6666', '#73c0de', '#fac858', '#5470C6'))

jpeg(filename = "test1.png", width = 7000, height = 3000, res = 600, quality = 100)
pic
dev.off()

2、细节拆分

1)导包

library(ggplot2)
library(scales)

ggplot2 中已经提供一些 scale 相关函数用于调整绘图中各种变量的比例尺。然而,还有一个独立的 R 包叫做 scales ,它提供了更多关于比例尺的函数和工具。本案例代码中的 breaks_pretty 函数由其提供。

2)创建图形对象

pic =
    ggplot(data_melt, aes(x = date, y = production, color = fruit, size = size)) +
    geom_point()
  • 设置 x 轴为日期,y 轴为产量,按 fruit 列的水果类型着色,散点大小为 size 列。
  • geom_point 指定画散点图。

3)主题设置

theme_bw() + 
theme(panel.grid.major = element_line(linetype = 5))
  • theme_bw 指定黑白主题。
  • 设置主网格线(坐标轴上的刻度位置对应的网格线为主网格线)为5号线段类型。

4)轴设置

xlab("") +
ylab("Production") +
theme(axis.text = element_text(size = 19)) + 
theme(axis.title = element_text(size = 22)) +
scale_x_datetime(breaks = breaks_pretty(n = 8))+
scale_y_log10(breaks = breaks_log(n = 10))
  • xlab 设置 x 轴标题,ylab 设置 y 轴标题。
  • 设置轴刻度字号19,轴标题字号22。
  • scale_x_datetime()函数用于调整 x 轴上日期时间型变量的比例尺,其中breaks参数用于指定刻度的位置。
    在这个特定的例子中,breaks_pretty(n = 8)是一个函数调用,它会生成相对于输入数据的合适的刻度位置。参数 n 指定了希望返回的刻度数量。
    因此,scale_x_datetime(breaks = breaks_pretty(n = 8)) 的作用是设置 x 轴上日期时间型变量的刻度位置为相对于数据合适的 8 个刻度位置。这样做可以确保刻度位置不会过于拥挤或稀疏,使得图形更易读。
  • scale_y_log10() 函数用于对 y 轴上的连续型变量进行对数变换,并且 breaks 参数用于指定刻度的位置。
    在这个特定的例子中,breaks_log(n = 10) 是一个函数调用,参数 n 指定了希望返回的刻度数量。scale_y_log10(breaks = breaks_log(n = 10)) 的作用是将 y 轴原本的均匀刻度改为对数刻度,并且使其返回的刻度数量为 10。这样做可以确保对数刻度的刻度位置合适,并且数量适当,以便更好地展示数据。

5)图例设置

guides(size = 'none') +
guides(color = guide_legend(override.aes = list(size = 6))) +
theme(legend.title = element_blank()) +
theme(legend.text = element_text(size = 14, face = "italic")) +
theme(legend.position = c(0.073, 0.765)) +
theme(legend.background = element_rect(fill = NA, colour = NA)) 
  • guides(size = ‘none’) 删除了 size 图例。这里的参数 size 指的是大小美学映射,而不是列名里的 “size”。
  • guides(color = guide_legend(override.aes = list(size = 6))) 将图例中的散点大小设为6。
  • 设置图例标题为空。
  • 设置图例字体为14号斜体。
  • 设置图例位置(x, y)为(0.073, 0.765)。
  • 设置图例背景填充颜色、边框颜色为无,防止遮挡散点。

6)散点颜色

scale_color_manual(values = c('#3ba272', '#91cc75', '#ea7ccc', '#9a60b4', '#ee6666', '#73c0de', '#fac858', '#5470C6'))

7)保存图片

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

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

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

相关文章

基于FreeRTOS+STM32CubeMX+LCD1602+MCP6S26(SPI接口)的6通道模拟可编程增益放大器Proteus仿真

一、简介: MCP6S26是模拟可 编程增益放大器(Programmable Gain Amplifiers, PGA)。它们可配置为输出 +1 V/V 到 +32 V/V 之间的增 益,输入复用器可通过 SPI 端口选择最多 6 个通道中的 一个。串行接口也可以将 PGA 置为关断模式,以降低 功耗。这些 PGA 针对高速度、低失调…

Python编程基础5

邮件编程 SMTP(Simple Mail Transfer Protocol)简单邮件传输协议,使用TCP协议25端口,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。…

【python】tkinter GUI开发: Button和Entry的应用实战探索

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

MySQL----排序ORDER BY

在对数据进行处理的时候,我们通常需要对读取的数据进行排序。而 MySQL 的也提供了 ORDER BY 语句来满足我们的排序要求。 ORDER BY 可以按照一个或多个列的值进行升序(ASC)或降序(DESC)排序。 语法 SELECT column1…

航班进出港管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,用户管理,航班信息管理,航飞降落请求管理,公告信息管理 前台账户功能包括:系统首页,个人中心,公告信息&a…

中国新兴的数字证书品牌——JoySSL

JoySSL是一个基于全球可信顶级根创新推出的新一代https数字证书,也是中国为数不多的自主品牌SSL证书。以下是关于JoySSL的详细介绍: 1 品牌背景: JoySSL是网盾安全旗下的产品,专注于网络安全技术服务、安全防护系统集成、数据安…

计算机网络知识CIDR(无类别域区间路由)

目录 介绍 基本信息 优点与关联 如何计算判定范围(你应该是来看这个的,前面是水字数的) 省流版 介绍 无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由…

【SkiaSharp绘图】01使用SkiaSharp绘制Hello World

文章目录 SkiaSharp简介主要特点适用场景 SkiaSharp的Hello World!1、创建一个.NET Framework项目2、拖入SKGLControl控件GLControl、SKControl、SKGLControl对比GLControlSKControlSKGLControl选择和使用场景高性能的选择 SKGLControl 3、绘制Hello World 为何选择SkiaSharpIm…

绘唐科技官网

绘唐科技AI工具是一系列经过训练的人工智能工具,旨在提供各种智能化的解决方案。这些工具可以应用于多个领域,包括自然语言处理、图像识别、语音识别、机器学习等。 其中,自然语言处理工具可以帮助用户处理和理解文本数据。它可以实现文本分类…

150W无感功率电阻器

特点:1x150 W/2x60 W/3x33 W功率 SOT-227模具封装两种不同的端子选项 可供选择良好的机械可靠性 无感设计 电阻值:0.5Ω≤ 1MΩ 耐抗精度:1%- 10 % 温度系数:50 ppm/℃- 250 ppm/℃(25℃-105℃) 额定功率:150W 70℃ bottom case tempe…

Thinkphp一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码

Thinkphp一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码,喜欢的朋友可以下载研究 一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码

8-1RT-Thread消息队列

8-1RT-Thread消息队列 消息队列又称队列,是一种常用于线程间通信的数据结构。 消息队列控制块里有两个链表,空闲列表用来挂接空的小几块,另一个链表是用来挂接存有消息的消息框。其中消息链表头指向消息队列当中的第一个消息框,而…

Python 制作词云图

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

LabVIEW处理大量数据时,怎样确保数据的准确性和完整性?

在LabVIEW处理中,确保大量数据的准确性和完整性至关重要。以下是详细的多角度分析和建议,以确保在LabVIEW中处理大量数据时,数据的准确性和完整性: 1. 数据采集阶段 1.1 高精度硬件选择 选择高精度的数据采集硬件,如…

C++设计模式---装饰器模式

1、介绍 装饰器(Decorator)模式是一种结构型设计模式,它允许你动态地给一个对象添加额外的职责。 装饰器模式主要用于扩展对象的功能,而又不改变其原有结构。在C中,装饰器模式主要应用于那些需要为对象动态添加功能或改…

STM32定时器输出pwm的几种模式

目录 定时器 输出脉冲模式: PWM模式(PWM Mode) 输出比较模式(Output Compare Mode) 总结 占空比: 输出比较模式与占空比 PWM模式与占空比 输出比较模式与PWM模式的结合 输出比较模式实例&#xf…

C++ Primer Plus第五版笔记(p201-250)

第六章 函数(下) 在含有return语句的循环后面应该也有一条return语句 不要返回局部对象的引用或指针,当函数结束时临时对象占用的空间也就随之释放掉了,所以两条return语句都指向了不再可用的内存空间。 如果函数返回指针、引用…

甲板上的战舰|模拟?|每日一题|chatgpt结合更正

文章目录 我的天免费的4o太好用了我的天免费的4o太好用了我的天免费的4o太好用了题目详情思路:关键:chatGPT配合纠正错误思路正确代码: 我的天免费的4o太好用了 我的天免费的4o太好用了 我的天免费的4o太好用了 重要的事情说三遍 题目详情…

螺栓拧紧力矩标准

据德国VOITH提供Nm换算所得 螺栓扭矩表 (单位:Nm、Kgm) Nm0.101972mKg M6~M24螺钉或螺母的拧紧力矩操作者参考 ★对于设计图纸有明确力矩要求的;应按图纸要求执行… 套管螺母紧固力矩Q/STB B07833-1998 材料 HPb63-3Y2 直通式压注油杯 Q/STB B07020-1998螺纹M6、…

CD工具AWX之作业模板与工作流模板

一、概要 本文以php和h5项目为示例,讲述从初始化项目到更新发布的实现详情。 它们跟java/go等进程程序不同,只需要下发.php等静态文件即可,不涉及进程的重启。 对于php项目,除了php文件外,还包括.env配置文件。&…