R语言入门 | 使用 ggplot2 进行数据可视化

   

1.0准备工作

先下好tidyverse包,并进行加载。
install.packages ( "tidyverse" )
library(tidyverse)
R 包只需安装一次,但每次开始新会话时都要重新加载。

1.1 数据框 

数据框是变量(列)和观测(行)的矩形集合。

下文经常使用mpg 包含了由美国环境保护协会收集的 38 种车型的观测数据。

当你想了解mpg数据框的信息时,可使用 ?<数据框名> 来查阅。

1.2 创建 ggplot 图形

ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy))

 

ggplot(data = mpg): 会创建一张空白图
函数 geom_point() 向图中添加一 个点层,可以创建一张散点图。
 mapping 参数:定义了如何将数据集中的变量映射为图形属性。
aes() 函数:aes() 函数的 x 参数和 y 参数分别指定了映射到 x 轴的变量与映射到 y 轴的变量。

1.3 绘图模板 

ggplot(data = <DATA>) + 
<GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))

#<GEOM_FUNCTION>
geom_point散点图

#<MAPPINGS>
x=<变量名>,y=<变量名>,color=<变量名>,shape,size,alpha(透明度)

eg.ggplot(data = diamonds) + geom_point(mapping = aes(x=carat,y=price))

1.4 图形属性映射 

eg.ggplot(data = mpg) + 
geom_point(mapping = aes(x = displ, y = hwy,
color = class))
可以将点的颜色映射为变量class               ^^^^^^^^^^^^^

区分:
#以手动为几何对象设置图形属性(常量)
ggplot(data = mpg) + 
geom_point(mapping = aes(x = displ, y = hwy), color = "blue",shape=21,fill="red")
                                              ^^^^^^^^^^^^^^^^^^^^^^^写在aes外面

1.5 分面 

1.5.1 facet_wrap()
 

eg. ggplot(data = mpg) + 
geom_point(mapping = aes(x = displ, y = hwy)) + 
facet_wrap(~ class, nrow = 2)

          以class来分组,排成2行


1.5.2 facet_grid()


(多一个分类)
eg.ggplot(data = mpg) + 
geom_point(mapping = aes(x = displ, y = hwy)) + 
facet_grid(drv ~ cyl)

1.6 几何对象 

几何对象是图中用来表示数据的几何图形对象。我们经常根据图中使用的几何对象类型来
描述相应的图。例如,条形图使用了条形几何对象,折线图使用了直线几何对象,箱线图
使用了矩形和直线几何对象。
#geom_point散点图
#geom_smooth平滑曲线图
#geom_bar条形图


#可以叠加使用
eg.ggplot(data = mpg) + 
+     geom_smooth(mapping = aes(x = displ, y = hwy)) + 
+     geom_point(mapping = aes(x = displ, y = hwy))

#在geom_smooth平滑曲线图中,可以按照不同的线型绘制出不同的曲线,每条曲线对应映射到线型的
变量的一个唯一值:
ggplot(data = mpg) + 
geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))
linetype线性
group
color
#不想要示例图
show.legend=FALSE  位置:和mapping并列
#不想要质性区间
se=FALSE  位置:和mapping并列

1.7 统计变换 

1.8 位置调整 

ggplot(data = diamonds) + 
geom_bar( 
    mapping = aes(x = cut, fill = clarity), 

    position = "dodge" 
  )


position参数

dodge分开排


identity叠着排,实际高度


默认 堆叠着排


jitter(适用范围:散点图)
position = "jitter"为每个数据点添加一个很小的随机扰动,这样就可以将重叠的点分散开:
ggplot(data = mpg) + 
geom_point( 
    mapping = aes(x = displ, y = hwy), 
    position = "jitter" 
  )

  

对比没有使用jitter的:

画盒图


ggplot(data = mpg,mapping = aes(x = class, y = hwy)) + 
geom_boxplot( aes(fill=class))

1.9 坐标系 

1.10 图形分层语法 

#图形属性映射

#分面

#几何对象  


几何对象是图中用来表示数据的几何图形对象。我们经常根据图中使用的几何对象类型来
描述相应的图。例如,条形图使用了条形几何对象,折线图使用了直线几何对象,箱线图
使用了矩形和直线几何对象。


#geom_point散点图
#geom_smooth平滑曲线图
#geom_bar条形图


#可以叠加使用
eg.ggplot(data = mpg) + 
+     geom_smooth(mapping = aes(x = displ, y = hwy)) + 
+     geom_point(mapping = aes(x = displ, y = hwy))

#在geom_smooth平滑曲线图中,可以按照不同的线型绘制出不同的曲线,每条曲线对应映射到线型的
变量的一个唯一值:
ggplot(data = mpg) + 
geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))
linetype线性
group
color
#不想要示例图
show.legend=FALSE  位置:和mapping并列
#不想要质性区间
se=FALSE  位置:和mapping并列

#简化
全局映射
ggplot是全局函数
而geom_point等是局部函数
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
geom_point(mapping = aes(color = class)) + 
geom_smooth()

#筛选
data = filter(数据集, class == 变量名)
eg.
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
geom_point(mapping = aes(color = class)) + 
geom_smooth( 
    data = filter(mpg, class == "subcompact"), 
    se 
= FALSE 
  )

#条形图
geom_bar
ggplot(data = diamonds) + 
geom_bar(mapping = aes(x = cut))   不用写y轴  

#统计变换函数


stat_count(可替换geom_bar)
ggplot(data = diamonds) + 
stat_count(mapping = aes(x = cut))

#如果是统计过的数据
ggplot(data = demo) + 
geom_bar( 
    mapping = aes(x = a, y = b), stat = "identity" 
  )
  
  
#显示一张表示比例(而不是计数)的条形图:
ggplot(data = diamonds) + 
geom_bar( 
    mapping = aes(x = cut, y = ..prop.., group = 1) )  


#强调统计变换用stat_summary()
ggplot(data = diamonds) + 
stat_summary( 
    mapping = aes(x = cut, y = depth), 
    fun.ymin = min, 
    fun.ymax = max, 
    fun.y = median >>>>>中位数,这里也可以改成mean,看均值
  )
  
#为条形图上色
 ggplot(data = diamonds) + 
geom_bar(mapping = aes(x = cut, color = cut)) 
ggplot(data = diamonds) + 
geom_bar(mapping = aes(x = cut, fill = cut)) //fill明显更常用

#映射
ggplot(data = diamonds) + 
+     geom_bar(mapping = aes(x = cut, fill = color)) 

#位置调整


ggplot(data = diamonds) + 
geom_bar( 
    mapping = aes(x = cut, fill = clarity), 
    position = "dodge" 
  )
position参数
dodge分开排
identity叠着排,实际高度
默认 堆叠着排
jitter(散点图用)
position = "jitter"为每个数据点添加一个很小的随机扰动,这样就可以将重叠的点分散开:
ggplot(data = mpg) + 
geom_point( 
    mapping = aes(x = displ, y = hwy), 
    position = "jitter" 
  )
  


#画盒图


ggplot(data = mpg,mapping = aes(x = class, y = hwy)) + 
geom_boxplot( 
    aes(fill=class))
    

#旋转坐标系  coord_flip()


ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
geom_boxplot() + 
coord_flip()

#绘制空间数据  geom_polygon()


nz <- map_data("nz") //取出新西兰地图
ggplot(nz, aes(long, lat, group = group)) + 
geom_polygon(fill = "white", color = "black") + 
coord_quickmap     coord_quickmap函数可以为地图设置合适的纵横比

#画鸡冠图

coord_polar()画极坐标

1.coord_polar(theta="x")

p<-ggplot(data = diamonds) +   geom_bar(mapping = aes(x = cut, fill = cut))+coord_polar()

2.coord_polar(theta="y") 

p<-ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = cut,width=1))+coord_polar(theta="y")

#分布进行,把命令储存到变量,可进行叠加

eg.

bar <- ggplot(data = diamonds) +
 geom_bar(
 mapping = aes(x = cut, fill = cut),
 show.legend = FALSE,
 width = 1
 ) +
 theme(aspect.ratio = 1) +
 labs(x = NULL, y = NULL)

bar + coord_flip()

bar + coord_polar()//鸡冠图

 show.legend = FALSE:删除图例

width=1:width越大,图挨得越近,等于1时,挨在一起

 theme(aspect.ratio = 1):宽高比为1,更圆

 labs(x = NULL, y = NULL):去除标签注释

频率分布图geom_freqpoly()

 ggplot(data = diamonds, mapping = aes(x = price)) +
+     geom_freqpoly(binwidth = 10)

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

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

相关文章

算法练习——字符串

一确定字符串是否包含唯一字符 1.1涉及知识点 c的输入输出语法 cin>>s; cout<<"NO"; 如何定义字符串 切记&#xff1a;在[]中必须加数字——字符串最大长度&#xff0c;不然编译不通过 char s[101]; 如何获取字符串长度 char s[101];cin>>s;i…

windows10远程桌面端口,修改Windows 10远程桌面端口的步骤

在Windows 10操作系统中&#xff0c;远程桌面功能为企业用户、技术支持人员以及个人用户提供了极大的便利&#xff0c;允许他们远程访问和管理另一台计算机的桌面环境。然而&#xff0c;默认的远程桌面端口&#xff08;通常为3389&#xff09;常常成为安全漏洞的潜在目标&#…

【基础】线段树

超详解线段树(浅显易懂,几乎涵盖所有线段树类型讲解,匠心之作,图文并茂)-CSDN博客 建树 void bui(int id,int l,int r)//创建线段树,id表示存储下标,区间[L,r] {if(l r)//左端点等于右端点&#xff0c;即为叶子节点(区间长度为1)&#xff0c;直接赋值即可{tr[id] a[l];return…

【图像处理与机器视觉】图像处理概述与像素

什么是数字图像处理 改善图像信息&#xff0c;便于作出解释 方便对图像传输&#xff0c;储存&#xff0c;方便机器理解 什么是数字图像 &#xff08;1&#xff09;模拟图像&#xff1a;连续二维函数 f&#xff08;x&#xff0c;y&#xff09;表示&#xff0c;其中 x&#xf…

操作系统真象还原:一些你可能正感到迷惑的问题

第0章-一些你可能正感到迷惑的问题 这是我看操作系统真象还原这本书的一些记录&#xff1a; 4 软件是如何访问硬件的 硬件在输入输出上大体分为串行和并行&#xff0c;相应的接口也就是串行接口和并行接口。串行硬件通过串行接口与 CPU 通信&#xff0c;反过来也是&#xff…

【uni-app】Pinia 持久化

小程序端 Pinia 持久化 说明&#xff1a;Pinia 用法与 Vue3 项目完全一致&#xff0c;uni-app 项目仅需解决持久化插件兼容性问题。 持久化存储插件 安装持久化存储插件&#xff1a; pinia-plugin-persistedstate pnpm i pinia-plugin-persistedstate插件默认使用 localStor…

MySQL——JDBC编程

目录 前言 一、JDBC概述 二、准备工作 1.下载MySQL的JDBC驱动包 2.把jar引入到项目中 三、JDBC编程 1.插入操作 2.查询操作 尾声 前言 本篇文章主要介绍如何利用Java代码进行操作数据库&#xff0c;在实际开发中&#xff0c;绝大多数对数据库的操作我们都是通过代码进行…

aop整理

一、aop基础知识 Spring AOP 详细深入讲解代码示例 二、spring/spring boot/spring cloud中出现的注解/类与概念的对应 Aspect&#xff1a; 标注当前MyAspect是一个切面类&#xff0c;–》对应切面的概念&#xff0c;在切面类中有用Before等注解修饰的方法作为advice,也有用…

uni-app全局弹窗的实现方案

背景 为了解决uni-app 任意位置出现弹窗 解决方案 一、最初方案 受限于uni-app 调用组件需要每个页面都引入注册才可以使用&#xff0c;此方案繁琐&#xff0c;每个页面都要写侵入性比较强 二、改进方案 app端&#xff1a;新建一个页面进行跳转&#xff0c;可以实现伪弹窗…

筛选的艺术:数组元素的精确提取

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、筛选的基本概念 二、筛选的实际应用案例 1. 筛选能被三整除的元素 2. 筛选小于特定值…

C++ list类

目录 0.前言 1.list介绍 1.1优势 1.2劣势 1.3容器属性 2.list使用 2.1构造函数 2.1.1默认构造函数 2.1.2填充构造函数 2.1.3范围构造函数 2.1.4拷贝构造函数 2.1.5初始化列表构造函数 2.2迭代器 2.2.1 begin() 2.2.2 end() 2.2.3 cbegin() 2.2.4 cend() 2.2.…

【C#】中托管与非托管对象区别、托管与非托管DLL区别

C 中的托管与非托管的区别_托管程序和非托管程序-CSDN博客 C# 中托管与非托管对象区别 在C#中&#xff0c;托管对象和非托管对象的主要区别在于内存管理和执行环境&#xff1a; 托管对象 (Managed Objects) 内存管理&#xff1a;托管对象的内存由.NET运行时&#xff08;CLR…

什么是CAS?

CAS&#xff08;比较并交换&#xff0c;Compare And Swap&#xff09;是一种多线程并发编程中的原子操作。它是一种乐观锁技术&#xff0c;用于解决 多线程环境下的数据竞争问题。CAS操作通过比较内存中的值与预期值是否相等来确定是否进行交换&#xff0c;如果相等&#xff0c…

PyMySQL连接池

背景 在用python写后端服务时候&#xff0c;需要与mysql数据库进行一些数据查询或者插入更新等操作。启动服务后接口运行一切正常&#xff0c; 隔了第二天去看服务日志就会报错&#xff0c;问题如下&#xff1a; pymysql.err.OperationalError: (2006, "MySQL server ha…

JavaScript-内存分配

内存空间 内存分为栈和堆 栈&#xff1a;由操作系统自动释放存放的变量值和函数值等。简单数据类型存放在栈中 栈会由低到高先入后出 堆&#xff1a;存储引用类型 &#xff08;对象&#xff09; 对象会先将数据存放在堆里面&#xff0c;堆的地址放在栈里面

关于virtualBox PC掉电后系统消失的解决方法

我们经常被会遇到笔记本电脑没电了&#xff0c;系统重新启动的情况。 这样会有出现虚拟机正在工作的时候&#xff0c;重启&#xff0c;导致虚拟机下次重启&#xff0c;系统出现问题。 直接上干货&#xff1a; 问题错误码 UUID {4105263a-f9d6-460e-b1e1-072377179af9} of the …

数字孪生智慧车站:全方位可视化管理平台

运用图扑数字孪生技术&#xff0c;智慧车站可视化管理平台实时模拟并监控车站运行状态&#xff0c;通过整合即时数据与历史数据&#xff0c;提供精准分析和预测。该平台支持乘客流量管理、设备运行监控、安全预警等多项功能&#xff0c;提高车站运营效率与安全性。直观的可视化…

N1 one-hot编码

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 onehot编码在机器学习比较常见&#xff0c;例如推荐系统中类别变量的处理等。 onehot 编码简介 One-hot编码&#xff08;one-hot encoding&…

进程发起DNS请求会fork进程吗

0 发起DNS请求本身并不会导致fork进程。当一个进程需要进行DNS解析时&#xff0c;它会使用操作系统提供的库函数&#xff08;如getaddrinfo、gethostbyname等&#xff09;发起DNS查询。这些库函数会通过网络接口向DNS服务器发送查询请求&#xff0c;并等待DNS服务器返回查询结…

这个橙子真的香!老司机徒手把玩香橙派Kunpeng Pro事后回忆录

说&#xff01;你是哪个门派&#xff1f; 香橙&#xff0c;芸香科柑橘属小乔木。枝通常有粗长刺&#xff0c;新梢及嫩叶柄常被疏短毛。叶厚纸质&#xff0c;翼叶倒卵状椭圆形&#xff0c;顶部圆或钝。。。 咦&#xff1f;小李&#xff1f;我们不是搞IT的嘛&#xff0c;怎么会有…