百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

用ggplot2画的第一幅图-R语言ggplot2快速入门7

bigegpt 2024-08-05 11:51 2 浏览

WalterWang认为,运行示例程序并修改参数是学习编程的一种高效方式。这种实践中学习的方法不仅可以帮助理解程序的基本结构和语法,还能加深对程序如何响应不同输入的理解。通过实际操作,编程新手能直观地看到代码更改后的效果,从而深入理解程序的运作原理。因而本书以示例为核心。

使用 ggplot2 的关键组件包括:

1,数据(data), 2,一组美学映射,这组映射定义了数据中的变量与视觉属性之间的关系, 3,至少一个层,描述如何渲染每个观测值。层通常通过几何函数(geom function)来创建。

另外WalterWang提醒大家注意,ggplot2只能绘制二维图形。下面我们来绘制第一幅图。

第一幅图

library(ggplot2)
ggplot(data = mtcars, aes(x = wt, y = mpg)) +
  geom_point()

我们可以看到我们有三个组件: 数据:mtcars 美学映射:wt 映射到 x 位置,mpg 映射到 y 位置。 层:点。

这里我们用了mtcars数据集,这是 R 语言中一个经典的数据集,它包含了 1973-1974 年间 32 辆汽车的各种规格和性能指标。这个数据集通常用于统计分析和数据可视化的示例教程中,因为它的结构清晰,而且包含多种类型的数据。

数据集中的变量包括:

  • mpg: 汽车每加仑燃油能行驶的英里数(英里/加仑)
  • cyl: 汽车的气缸数
  • disp: 发动机的排量(立方厘米)
  • hp: 发动机的马力
  • drat: 后桥比率
  • wt: 汽车的重量(千克)
  • qsec: 汽车完成四分之一英里加速的时间(秒)
  • vs: 发动机的形状(V型或直列)
  • am: 变速器类型(自动 = 0,手动 = 1)
  • gear: 前进档数
  • carb: 汽化器的数量

在本书中,我们不对数据进行分析。只是来学习如何做图,所以有的图可能没有意义。所以大家对这个数据集可以不不求甚解。

缺省

ggplot()中第一个未命名参数是数据。传递给 aes() 的两个未命名参数将被映射到 x 和 y。这意味着以下代码与上面的示例是相同的:

ggplot(mtcars, aes(wt, mpg)) +
  geom_point()
ggplot(mtcars, aes(y = mpg, x = wt)) +
  geom_point()

理解数据集应用的基本逻辑

大家可以运行以下程序去理解应用数据集的逻辑。如果不给geom_point() 指明数据集时,geom_point()用ggplot()中指定的数据集

ggplot(mtcars) +
  geom_point(aes(x = wt, y = mpg))
ggplot(mtcars) + geom_point(aes(x = wt, y = mpg)) + geom_point(aes(x = wt/4, y = mpg/4))
ggplot(data = NULL) +  geom_point(aes(x = mtcars$wt, y = mtcars$mpg))

我们可以使用来自两个不同数据集的数据。

temp <- mtcars
ggplot(data = NULL) +  geom_point(aes(x = mtcars$wt, y = mtcars$mpg)) +  geom_point(aes(x = temp$wt/4, y = temp$mpg/4))

WalterWang建议你尝试运行以下代码并进行比较。

ggplot(mtcars, aes(x = wt, y = mpg)) +  geom_point() +  geom_point(aes(x = temp$wt/4, y = temp$mpg/4))

理解 ggplot 是一个对象

p <- ggplot(data = mtcars, aes(x = wt, y = mpg))
p
p_base <- p + geom_point()
p_base
p1 <- p_base + geom_point(aes(x = temp$wt/4, y = temp$mpg/4))
p1

由于 ggplot 是一个对象,你可以打印、保存和总结它。

print(p_base)
ggsave("p_base.png", p_base , width = 6, height = 6)
summary(p_base)
## data: mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb [32x11]
## mapping:  x = ~wt, y = ~mpg
## faceting: <ggproto object: Class FacetNull, Facet, gg>
##     compute_layout: function
##     draw_back: function
##     draw_front: function
##     draw_labels: function
##     draw_panels: function
##     finish_data: function
##     init_scales: function
##     map_data: function
##     params: list
##     setup_data: function
##     setup_params: function
##     shrink: TRUE
##     train_scales: function
##     vars: function
##     super:  <ggproto object: Class FacetNull, Facet, gg>
## -----------------------------------
## geom_point: na.rm = FALSE
## stat_identity: na.rm = FALSE
## position_identity

在一个图中包括多个小图

我们首先介绍这一点,以便于比较不同的图表。我们需要一个新的包 ggpubr。

library(ggpubr)
p1 <- p_base + geom_point(aes(x = temp$wt/4, y = temp$mpg/4))
ggarrange(p_base, p1, ncol = 2, nrow = 1,  widths = c(1, 1),  heights = 0.5)

在以后的章节中,我们都先运行以下这几行程序。

library(ggplot2) 
library(ggpubr) 
library(ggtext) #用于个性化图表 
library(dplyr) #用于数据处理
p_base <- ggplot(data = mtcars, aes(x = wt, y = mpg)) + geom_point()

相关推荐

程序员请收好:10个非常有用的 Visual Studio Code 插件

一个插件列表,可以让你的程序员生活变得轻松许多。作者|Daan译者|Elle出品|CSDN(ID:CSDNnews)以下为译文:无论你是经验丰富的开发人员还是刚刚开始第一份工作的初级开发人...

PADS在WIN10系统中菜单显示不全的解决方法

决定由AD转PADS,打开发现菜单显示不正常,如下图所示:这个是由于系统的默认字体不合适导致,修改一下系统默认字体即可,修改方法如下:打开开始菜单-->所有程序-->Windows系统--...

一文讲解Web前端开发基础环境配置

先从基本的HTML语言开始学习。一个网页的所有内容都是基于HTML,为了学好HTML,不使用任何集成工具,而用一个文本编辑器,直接从最简单的HTML开始编写HTML。先在网上下载notepad++文...

TCP/IP协议栈在Linux内核中的运行时序分析

本文主要是讲解TCP/IP协议栈在Linux内核中的运行时序,文章较长,里面有配套的视频讲解,建议收藏观看。1Linux概述  1.1Linux操作系统架构简介Linux操作系统总体上由Linux...

从 Angular Route 中提前获取数据

#头条创作挑战赛#介绍提前获取意味着在数据呈现在屏幕之前获取到数据。本文中,你将学到,在路由更改前怎么获取到数据。通过本文,你将学会使用resolver,在AngularApp中应用re...

边做游戏边划水: 基于浅水方程的水面交互、河道交互模拟方法

以下文章来源于腾讯游戏学堂,作者Byreave篇一:基于浅水方程的水面交互本文主要介绍一种基于浅水方程的水体交互算法,在基本保持水体交互效果的前提下,实现了一种极简的水面模拟和物体交互方法。真实感的...

Nacos介绍及使用

一、Nacos介绍Nacos是SpringCloudAlibaba架构中最重要的组件。Nacos是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,提供注册中心、配置中心和动态DNS...

Spring 中@Autowired,@Resource,@Inject 注解实现原理

使用案例前置条件:现在有一个Vehicle接口,它有两个实现类Bus和Car,现在还有一个类VehicleService需要注入一个Vehicle类型的Bean:publicinte...

一文带你搞懂Vue3 底层源码

作者:妹红大大转发链接:https://mp.weixin.qq.com/s/D_PRIMAD6i225Pn-a_lzPA前言vue3出来有一段时间了。今天正式开始记录一下梗vue3.0.0-be...

一线开发大牛带你深度解析探讨模板解释器,解释器的生成

解释器生成解释器的机器代码片段都是在TemplateInterpreterGenerator::generate_all()中生成的,下面将分小节详细展示该函数的具体细节,以及解释器某个组件的机器代码...

Nacos源码—9.Nacos升级gRPC分析五

大纲10.gRPC客户端初始化分析11.gRPC客户端的心跳机制(健康检查)12.gRPC服务端如何处理客户端的建立连接请求13.gRPC服务端如何映射各种请求与对应的Handler处理类14.gRP...

聊聊Spring AI的Tool Calling

序本文主要研究一下SpringAI的ToolCallingToolCallbackorg/springframework/ai/tool/ToolCallback.javapublicinter...

「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作

一、概述作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockers...

在MySQL登录时出现Access denied for user ~~ (using password: YES)

Windows~~~在MySQL登录时出现Accessdeniedforuser‘root‘@‘localhost‘(usingpassword:YES),并修改MySQL密码目录适用...

mysql 8.0多实例批量部署script

背景最近一个项目上,客户需要把阿里云的rdsformysql数据库同步至线下,用作数据的灾备,需要在线下的服务器上部署mysql8.0多实例,为了加快部署的速度,写了一个脚本。解决方案#!/bi...