R语言ggplot2绘图学习笔记(基础知识大全)

R语言ggplot2绘图入门笔记

今天分享的内容是在R语言中利用ggplot2进行可视化的入门笔记,适用于初学者了解ggplot2绘图系统。干货满满,建议收藏!

首先安装以下R包:

install.packages(c("tidyverse""colorspace""corrr",  "cowplot",
                   "ggdark""ggforce""ggrepel""ggridges""ggsci",
                   "ggtext""ggthemes""grid""gridExtra""patchwork",
                   "rcartocolor""scico""showtext""shiny",
                   "plotly""highcharter""echarts4r","devtools","readxl"))
devtools::install_github("JohnCoene/charter")

数据导入环节

使用readxl包中read_excel()函数将数据导入到R中(该数据为网络下载),也可以使用其他的数据读取函数,或者使用R语言自带的系统示例数据都可以,主要是获得一份数据表格,用于可视化绘图。

chlr <- read_excel("~/ggplot2-绘图数据表.xlsx")
tibble::glimpse(chlr)
head(chlr, 5)

# # A tibble: 5 × 10
#    city date  death                temp dewpoint  pm10 o3      time season ...10
#   <dbl> <chr> <dttm>              <dbl>    <dbl> <dbl> <chr>  <dbl>  <dbl> <chr>
# 1    89 chic  1987-03-29 00:00:00   101     39.5  30.1 30.79…  20.2     88 wint…
# 2    90 chic  1987-03-30 00:00:00   125     29    12.9 20.79…  29.6     89 wint…
# 3    91 chic  1987-03-31 00:00:00   106     30    19   36.79…  23.9     90 wint…
# 4    92 chic  1987-04-01 00:00:00   119     41.5  22.9 29.79…  21.3     91 spri…
# 5    93 chic  1987-04-02 00:00:00    91     29.5  14.6 37.79…  22.1     92 spri…

ggplot语法规则

  • 数据(data):要求是整洁的数据框

  • 映射(mapping):指明变量与图形所见元素之间的联系

  • 几何对象(geometric):数据的几何形状

  • 标度(scale):标度函数控制几何对象中的标度映射

  • 统计变换(stats):构建新的统计量进行绘图

  • 坐标系(coord):数据的转换

  • 位置调整(position adjustments):调用位置调整函数来调整某些图形元素的实际位置

  • 分面(facet):对数据分组再分别绘图

  • 主题(theme):图形的整体视觉默认值

  • 输出(output):用ggsave()函数将图形保存为想要格式的文件

绘图函数使用方法

函数的第一个参数默认为数据源,因此需要将绘图数据框填写在此处,将数据变量(date和temp)添加到aes()内部,表示x轴对应时间,y轴对应温度。

g <- ggplot(chlr, aes(x = date, y = temp))
alt

为什么运行后出来一个灰色的空图片?因为还没有设置画什么类型的图,通过添加geom_point()来创建散点图,类似于geom开头的这些函数可以用于不同的可视化方式。

g + geom_point()
alt

再次运行就能看到散点图的效果,这就是gemo图层实现的效果,除此之外,可以组合几个图层,形成更复杂的图片。(比如下图是在散点图基础上添加折线图)

alt

调整几何图形的属性

将所有的点转换成蓝色钻石,更改图形中子元素的形状和颜色,这个需求在实际分析中经常碰到,其实也很简单。

g + geom_point(color = "blue", shape = "diamond", size = 3)

只需要将color和shape等参数添加具体的值即可,需要注意的是这些参数不能放在aes中,因为aes控制映射关系,也就是数据和图的映射,而我们想更改颜色和形状是人为参数指定的具体值,而不是数据映射而得。 alt

可以使用预设颜色或十六进制颜色代码,也可以使用不同的色盘。

g + geom_point(color = "red", shape = "diamond", size = 2) +
  geom_line(color = "red", linetype = "dotted", size = .5)
alt

设置一个内置主题,通过theme图层可以控制图片的主题,个人认为bw主题比较美观、简洁大方。

theme_set(theme_bw())
g + geom_point(color = "red")
alt

调整坐标轴相关信息

控制横纵坐标轴的信息可以通过xlab、ylab来实现,比如下面将修改坐标轴的标签,效果如下:

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "red") +
  xlab("time") +
  ylab("Temperature (°F)")
alt

改变轴标题格式

通过labs图层可以同时修改横纵坐标轴标签等属性,另外还可以在theme属性中设置标签字体的颜色和大小。

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "red") +
  labs(x = "time", y = "Temperature (°F)") +
  theme(axis.title = element_text(size = 13, color = "red", face = "italic"))
alt

使用axis更改坐标轴文本的外观,快速自由定制好看的图片。

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "red") +
  labs(x = "time", y = "Temperature (°F)") +
  theme(axis.text = element_text(color = "blue", size = 10),
        axis.text.x = element_text(face = "italic"))
alt

旋转坐标轴文本: 使用hjust和vjust可以在水平(0 =左,1 =右)和垂直(0 =上,1 =下)调整文本的位置,angle参数可以设置旋转的角度。(该功能也非常有用,尤其是在你的标签长度很长时,轻轻地旋转就能容纳更多信息)

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "red") +
  labs(x = "time", y = "Temperature (°F)") +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1, size = 13))
alt

删除坐标轴标题:使用NULL删除

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "red") +
  labs(x = NULL, y = "")
alt

限制坐标轴范围:使用limits属性控制

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "red") +
  labs(x = "time", y = "Temperature (°F)") +
  scale_y_continuous(limits = c(0,70))+
  coord_cartesian(ylim = c(0,70))
alt

scale_y_continuous去除范围外的所有数据点,coord_cartesian调整可见区域。

图表坐标原点设置

通过expand_limits参数可以控制图片中坐标轴的起始位置,规定图片的布局。

chlr_middle <- dplyr::filter(chlr, temp>25, o3>5)
ggplot(chlr_middle, aes(x = temp, y = o3)) +
  geom_point(color = "#E080E8") +
  labs(x = "Temperature",
       y = "Ozone") +
  expand_limits(x = 0, y = 0)
alt

设置相同比例的坐标轴

coord_fixed(ratio = 1)参数能够将横纵坐标轴的比例设置为1:1,该功能在绘制某些相关性图时可能有用,另外还可以在ggsave图片保存时指定长和宽。

ggplot(chlr_middle, aes(x = temp, y = o3)) +
  geom_point(color = "#E080E8") +
  labs(x = "Temperature",
       y = "Ozone") +
  xlim(c(0, 100)) + ylim(c(0, 80)) +
  coord_fixed(ratio = 1)
alt

使用函数调整标签

可以在label参数中传入函数,用于生成一系列的刻度标签,这个功能也挺使用,比如你想展示某些带单位的信息,可以通过这个函数添加统一单位。

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "#E080E8") +
  labs(x = "time", y = NULL) +
  scale_y_continuous(label = function(x) {return(paste(x, "Degrees"))})
alt

添加标题:使用ggtitle添加左上角标题

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "#E080E8") +
  labs(x = "time", y = "Temperature (°F)") +
  ggtitle("Temperature correlation curves")
alt

可以使用labs()函数添加元素,支持多种标注类型,比如主标题、副标题等。

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(x = "time", y = "Temperature (°F)",
       title = "Temperature correlation curves",
       subtitle = "Scatter plot of daily temperature changes",
       caption = "Data:XXX",
       tag = "Fig. 1")
alt

加粗标题:可以在theme主题中设置标题的显示格式,比如字体大小、颜色、粗细、形状等等。

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(x = "time", y = "Temperature (°F)",
       title = "Temperature correlation curves") +
  theme(plot.title = element_text(face = "bold",
                                  margin = margin(10, 5, 10, 5),
                                  size = 13))
alt

调整标题位置:通过hjust和face等参数可以自主调整标题,使用

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(x = "time", y = NULL,
       title = "Temperature correlation curves",
       caption = "Data:XXX") +
  theme(plot.title = element_text(hjust = 0.5, size = 15, face = "bold.italic"),
  plot.caption = element_text(hjust = 0))
alt

更改多行文本的间距

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "#35CBC0") +
  labs(x = "time", y = "Temperature (°F)") +
  ggtitle("Scatter plot of daily temperature changes") +
  theme(plot.title = element_text(lineheight = .4, size = 17))
alt

图例设置

当把color参数放在aes映射中时,R语言会自动根据数据的分组进行不同颜色的绘制,并生成图例(下图右侧所示)

ggplot(chlr,aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "time", y = "Temperature (°F)")
alt

移除图例:使用position参数控制

ggplot(chlr,aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "time", y = "Temperature (°F)") +
  theme(legend.position = "none")
alt

保留形状的图例,放弃颜色的图例,使用guides图层进行控制,可以指定图例的展示方式。

ggplot(chlr,aes(x = date, y = temp,
           color = season, shape = season)) +
  geom_point() +
  labs(x = "time", y = "Temperature (°F)") +
  guides(color = "none")
alt

移除图例标题

默认状态下图例的顶部会添加标题,也就是数据框中对应的变量名称,可以通过下面的方法进行删除。

ggplot(chlr, aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "time", y = "Temperature (°F)") +
  theme(legend.title = element_blank())
alt

改变图例的位置

使用主题图层的legend.position参数可以控制图例的摆放位置,支持上下左右或者是自定义的位置,方便后期调整。

ggplot(chlr, aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "Year", y = "Temperature (°F)") +
  theme(legend.position = "top")
alt

改变图例的方向: 默认情况下图例是横向排列,可以根据需要调整为纵向排列,看起来更加美观。

ggplot(chlr, aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "time", y = "Temperature (°F)") +
  theme(legend.position = c(.9, .8),
        legend.background = element_rect(fill = "transparent")) +
  guides(color = guide_legend(direction = "vertical"))
alt

改变图例的标题:可以通过legend.title参数控制图例的标题,支持设置颜色、大小、字体等属性。

ggplot(chlr, aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "time", y = "Temperature (°F)",
       color = "About the change of seasons") +
  theme(legend.title = element_text(color = "#61376D",
                                    size = 10, face = "bold"))
alt

改变图例元素的顺序:在R语言中字符串类型的数据在映射时容易出现顺序错误,为了能够人为设置固定的顺序,可以将数据中字符串类型的变量转换为因子类型(factor),然后设置因子的水平,这样就可以在绘图时以指定顺序展示了。

chlr$season <-
  factor(chlr$season,
         levels = c("spring""summer""autumn"))
ggplot(chlr, aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "time", y = "Temperature (°F)")
alt

改变图例的标签:有时候默认的图例标签不符合我们的预期,这时候可以使用scale_color_discrete函数来控制图例的显示内容,自定义文字进行展示。

ggplot(chlr, aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "time", y = "Temperature (°F)") +
  scale_color_discrete(
    name = "Seasons:"
    labels = c("Mar—May""Jun—Aug""Sep—Nov")
  ) +
  theme(legend.title = element_text(
   color = "chocolate", size = 13
  ))
alt

改变图例符号的大小:假如想更改图例中元素的尺寸大小,可以通过函数 guide_legend(override.aes = list(size = 5))实现这个操作。

ggplot(chlr, aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "time", y = "Temperature (°F)") +
  theme(legend.key = element_rect(fill = NA),
        legend.title = element_text(color = "#2135C8",
                                    size = 12, face = 2)) +
  scale_color_discrete("Seasons:") +
  guides(color = guide_legend(override.aes = list(size = 5)))
alt

手动添加图例项:通过添加不同的图层可以将折线图、散点图组合到一起,此时图例将根据具体的情况进行调整。

ggplot(chlr, aes(x = date, y = o3)) +
  geom_line(aes(color = "line")) +
  geom_point(aes(color = "points")) +
  labs(x = "time", y = "Ozone") +
  scale_color_discrete("Type:")
alt

改变面板背景颜色:默认图片背景是灰色或者白色,可以通过panel.background参数进行针对性的设置,变成自己喜欢的颜色,修改特定主题。

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "#7F31DF", size = 2) +
  labs(x = "time", y = "Temperature (°F)") +
  theme(panel.background = element_rect(
    fill = "#90E2F0", color = "#90E2F0", size = 2)
  )
alt

更改图表背景颜色:图表的背景颜色是使用plot.background参数进行控制,也就是图片中横纵坐标轴区域。

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(x = "time", y = "Temperature (°F)") +
  theme(plot.background = element_rect(fill = "#DFD9D5",
                                       color = "#8C8987", size = 2))
alt

提示:panel图层表示图片中主题部分,例如散点折现等,而plot图层表示图片的控制部分,比如横纵坐标轴,这些元素都在图层中组合存在。

删除所有网格线:有时候需要一个纯净的背景,可以通过移除panel部分的网格线来实现,看起来干净了很多。

ggplot(chlr, aes(x = date, y = temp)) +
  geom_point(color = "#E46724") +
  labs(x = "time", y = "Temperature (°F)") +
  theme(panel.grid.major = element_blank(),  # 移除主要网格线
        panel.grid.minor = element_blank())  # 移除次要网格线
alt

今天分享的R语言ggplot2绘图入门教程就到这里,感谢你的阅读,如果有所收获欢迎点赞转发,你的支持是作者更新的最大动力。

本文由 mdnice 多平台发布

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

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

相关文章

Python 全栈体系【四阶】(二十三)

第五章 深度学习 三、计算机视觉基本理论 1. 计算机视觉概览 1.1 什么是计算机视觉 计算机视觉在广义上是和图像相关的技术总称。包括图像的采集获取&#xff0c;图像的压缩编码&#xff0c;图像的存储和传输&#xff0c;图像的合成&#xff0c;三维图像重建&#xff0c;图像…

Java快速入门系列-9(Spring框架与Spring Boot —— 深度探索及实践指南)

第九章:Spring框架与Spring Boot —— 深度探索及实践指南 9.1 Spring框架概述9.2 Spring IoC容器9.3 Spring AOP9.4 Spring MVC9.5 Spring Data JPA/Hibernate9.6 Spring Boot快速入门与核心特性9.7 Spring Boot的自动配置与启动流程详解9.8 创建RESTful服务与数据库交互实践…

学习云计算HCIE选择誉天有什么优势?

誉天云计算课程优势实战性强 课程注重实践操作&#xff0c;通过实际案例和实验操作&#xff0c;让学员深入了解云计算的应用场景和实际操作技能。课程内容全面 涵盖所有云计算涉及的IT基础知识、服务器、存储、网络等方面的基础知识&#xff0c;开源操作系统Linux&#xff0c;开…

12-pyspark的RDD算子注意事项总结

目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第…

学习R语言第二天

R语言可以做什么 1.数据分析 R语言如何使用 1. 请看我的操作方式 2. 如何获取当前路径 -- 获取当前路径 > getwd() [1] "E:/R/RWorkSpace/day01" -- 修改当前路径 > setwd(dir "E:/R") > getwd() [1] "E:/R" 3.查看当下数据值的信…

集合系列(十九) -List与数组互转操作介绍

一、数组转List 方式一 通过 Arrays.asList(strArray) 方式&#xff0c;将数组转换List&#xff0c;但不能对List增删&#xff0c;只能查改&#xff0c;否则抛异常&#xff0c;例子如下&#xff1a; public static void main(String[] args) {//创建一个字符串数组String[] …

EFcore 6 连接oracle19 WinForm vs2022

用EFcore访问Oracle&#xff0c;终于不需要Oracle的什么安装包了&#xff0c;直接在VS2022中就可以轻松搞定。在csdn上看到一哥们的帖子&#xff0c;测试了一下&#xff0c;发现很方便。使用的场景是&#xff1a;VS2022中EFcore6。经过测试&#xff0c;同 Navicat Premium 16比…

ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等

目录 ES6概念ECMAScript6简介ECMAScript 和 JavaScript 的关系ES6 与 ECMAScript 2015 的关系 1、let 、 const 、var 区别2、变量解构赋值1、数组解构赋值2、对象解构赋值3、字符串的解构赋值 3、展开剩余运算符1、**展开运算符(...)**2、**剩余运算符(...)** 4、函数的拓展函…

Windows终端添加git bash

环境&#xff1a;windows11 终端&#xff1a;windows terminal git bash默认的界面不太好看&#xff0c;添加到终端会比较好用 步骤 打开 windows terminal&#xff0c;在向下箭头 点击 设置左侧栏 点击 “添加新配置文件”&#xff0c;如下图配置&#xff0c;主要修改项&…

牛客2024【牛客赛文X】春招冲刺ONT61 每日温度【hard 单调栈 Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/1f54e163e6944cc7b8759cc09e9c78d8 思路 单调栈最直接的应用就是获取数组中每个位置i,i的左边第一个比i大或者小的位置/数以及,i的右边第一个比i大或者小的位置/数不懂的同学看这里https://blog.csdn.net/Borsl…

docker完美安装分布式任务调度平台XXL-JOB

分布式任务调度平台XXL-JOB 1、官方文档 自己看 https://www.xuxueli.com/xxl-job/#1.1%20%E6%A6%82%E8%BF%B0 2、使用docker部署 本人使用的腾讯云&#xff0c;安装docker暴露一下端口&#xff0c;就很舒服的安装这个服务了。 docker pull xuxueli/xxl-job-admin:2.4.03…

使用Docker部署Node.js

第一步&#xff1a;在Node.js项目的根目录中新建Dockerfile文件 # 使用官方 Node.js 镜像作为基础镜像 FROM node:latest# 设置工作目录 WORKDIR /usr/src/app# 将项目文件复制到容器中 COPY . .# 将npm源设置为淘宝镜像 RUN npm config set registry https://registry.npmmir…