ggplot2学习笔记

ggplot2绘图入门 ggplot2 是 R 语言中的一个强大数据可视化包,基于“图层语法”(Grammar of Graphics)。图层语法将图表分解为多个可组合的元素(如数据、几何对象、统计变换等),用户可以通过叠加这些元素创建复杂且美观的图表。在 ggplot2 中,使用 aes() 函数将数据变量映射到图表的 x 轴和 y 轴。这种映射定义了数据如何在图表中呈现,并帮助观察者理解数据的关系和趋势。# 将变量 var1 映射到 x 轴,将变量 var2 映射到 y 轴。 阅读详情

ggplot2包学习笔记

一、qplot函数使用

 qplot(x=…,y=…,data=…,shape=…,colour=…,size=…,alpha=…,geom=…,facets=…,xlim=c(),ylim=c(),log=””,main=””,xlab=””,ylab=””)

参数介绍:

shape:为数据集data中的分类变量,即为因子

colour:为数据集data中的分类变量,即为因子

size:使用I(num)形式调用,比如I(2)即可改变散点大小

alpha图形属性:其取值从0(完全透明)到1(完全不透明),透明度通常用分数表示,如:1/19,1/50,分母上的数字表示经过多少次重叠之后颜色将变得不透明。

geom几何对象:

    二维变量关系:

geom=”point” 绘制散点图,这是当你指定了x,y,data参数时,qplot函数的默认设置

    gemo=”smooth”  拟合一条平滑曲线,并在图中展示曲线和标准误

    geom=”boxplot” 绘制箱线胡须图

    geom=”path” 和geom=”line ”:可以在散点之间绘制连线,

    一维变量:

    连续性变量:

    geom=”histogram” 绘制直方图,在画直方图时,使用bins参数可以调整组数,

binwidth可以调整组距,使用fill=参数可以显示在条线图每组中不同分组中的数量

情况

    geom=”freqpoly”绘制频率多边形 

    geom=”density” 绘制密度曲线,使用colour=…参数可以画出多条由colour为分组依据的密度图

     

    离散型变量:

    geom=”bar”  绘制条形图,使用weight=…参数

    

分面操作:facets=var1~var2,或者facets=var1~. ,

   如果想要纵坐标显示密度而不是数量 ,可以添加参数..density.. ,

  

二、ggplot2语法

图像属性:坐标,颜色,形状,大小

标度变换:把数值的数据单位转换为电脑可以识别的物理单位(如像素和颜色)

图层:

数据,映射,统计变换,几何形状和位置调整共同组成了一个图层

一个图形可以包括很多图层。

 

 一个由图层语法所定义的图由以下几部分组成:

      --一个数据集和一组变量到图形属性的映射

      --一个或者多个图层

         每个图层都是由几何对象,统计变换,位置调整组成

      --标度,每个图形属性都对应一个标度

--分面设定

 

 option组件:

p<-qplot(displ,hwy,data=mpg,colour=factor(cyl))

summary(p)

save(p,file=”plot.rdata”)

load(“plot.rdata”)

ggsave(“plot.rdata”,width=5,height=5)

 

三、使用图层构建图像

#创建绘图对象

p<-ggplot(diamonds,aes(x=carat))

##使用+添加图层

p<-p+layer(

  geom="bar",

  stat="bin",

  params = list(fill="steelblue",bins=30),

  position = "identity")

##查看图形

p

使用快捷函数添加图层

由上述图层构建图像的案例可以知道:在创建绘图对象之后,我们想要看到图像就要添加图层。在图层中,我们要设定stat和geom参数。每一个几何对象都对应着一个默认的统计变换和位置参数。每一个统计变换都对应着一个默认的几何对象参数。所以对于图层我们只需要设定stat或geom参数即可。

p <- p + geom_histogram(binwidth = 2, fill = “steelblue)

这类快捷函数的格式为:

geom_XXX(mapping, data, …, stat, position)

stat_XXX(mapping, data, …, geom, position)

      mapping:可选,一组图形属性映射,通过aes()函数设定

      data:可选,它会修改默认的数据集。大部分情况下该参数被省略,默认数据集将被调用。

      … : geom或stat的参数。

      geom或者stat:可选,可以修改geom默认的为stat值,或者stat所默认的geom值。

      position:可选,调整对象重合的方式。

图层可以被添加到ggplot()或qplot()创建的图像之上。

图形属性映射:

   aes()函数用来将数据变量映射到图形中,从而使变量成为可以被感知的图形属性。

   aes(x =  , y =  , color =  ,)

如果要删除图形属性映射,只需要将属性复制为NULL

设定和映射:

除了可以将一个图形属性映射到一个变量,你也可以在图层参数中将其设定为一个单一的值,比如geom_point(color = “red”),也可以用geom_point(color = I(“red”))

分组:

在ggplot2里面,几何对象大致可以分为个体几何对象和群组几何对象两大类。个体几何对象对数据框的每一条数据可以绘制一个可以区别其他个体的图形对象。比如点集合对象 。而群组几何对象用来表示多条观测,他可以是某个统计摘要的一个结果,或者是几何对象的基础展示。例如多边形。线条和路径介于这两者之间:每条线都由许多线段组成,而每条线段有代表两个点。

单图形属性分组

可以通过讲变量赋值给group属性即可

p <- ggplot(Oxboys, aes(age, height, group = Subject)) + geom_line()

不同图层上的不同分组

我们想要使用所有的数据基于lm方法绘制一条平滑曲线

p <- p + geom_smooth(aes(group = 1), method = "lm",size = 2, se = F)

修改默认分组:

绘制各个时期身高的箱线图

boysbox  <- ggplot(Oxboys, aes(Occasion, height)) + geom_boxplot()

在此基础上添加个体轨迹:

boysbox  <- boysbox + geom_line(aes(group = Subject), color = “red”)

匹配图形属性和图形对象

   

 

 

 

集合对象:

 

统计变换:

一个统计变换必须是位置尺度不变量,即f(x+a)=f(x) +a,f(bx)=bf(x)。

 

ggplot(diamonds, aes(x = carat)) + geom_histogram(aes(y = ..density..), binwidth = 0.1)

生成的变量必须用..围起来。

位置调整:

所谓位置调整,即对该层中的元素位置进行微调。

堆叠、填充和并列

ggplot(diamonds, aes(clarity)) + geom_bar(aes(colour =cut),position = "dodge")

ggplot(diamonds, aes(clarity)) + geom_bar(aes(colour =cut),position = "stack")

 

ggplot(diamonds, aes(clarity)) + geom_bar(aes(colour =cut),position = "fill")

ggplot(diamonds, aes(clarity,fill = color)) + geom_bar(position = "fill")

 

整合:

结合几何对象和统计变换

 

 

改变图形和数据集:

 

 

 

 

 

 

 

工具箱

基本的图形类型

    这些几何对象都是二维的,故x和y两种图形属性是不可或缺的。同时,他们还可以接受colour和size两种属性。另外,填充型几何对象(条形、瓦片和多边形)还可接受fill图形属性。点可以接受shape属性。线和路径可以接受linetype属性。

geom_area()

geom_bar(stat = “identity”)

geom_line()/geom_path()

geom_point()

geom_ploygon()

geom_text()

geom_tile()

 

df <- data.frame(
x = c(3,1,5),
y = c(2,4,6), 
label = c("a", "b", "c"))

 

p <- ggplot(df, aes(x,y)) + xlab(NULL) +ylab(NULL)

 
p + geom_point() + labs(title = "geom_point")

p+geom_bar(stat = "identity")+labs(title = "geom_bar")

 

 

p+geom_line()+labs(title = "geom_bar")

p+geom_area()+labs(title = "geom_area")

p+geom_path()+labs(title = "geom_path")

p+geom_text(aes(label = label))+labs(title = "geom_text")

p+geom_tile() +labs(title = "geom_tile")

p+geom_polygon() +labs(title = "geom_polygon")

展示数据分布:

一维连续型分布:

depth_dist + geom_histogram(aes(y = ..density..), binwidth = 0.1) + facet_grid(cut ~ .)

depth_dist + geom_histogram(aes(fill = cut), binwidth = 0.1, position = "fill") 

depth_dist + geom_freqpoly(aes(y = ..density.., color = cut), binwidth = 0.1) 

 

qplot(cut, depth, data = diamonds, geom = "boxplot")

 
 

 

library(plyr)
qplot(carat, depth, data = diamonds, geom = "boxplot", group = round_any(carat, 0.1, floor), xlim = c(0, 3)

二维连续型分布

qplot(depth, data = diamonds, geom = "density", fill = cut, alpha = I(0.2))

处理遮盖问题

小规模的遮盖绘制问题可以通过绘制更小的点或使用中空符号来解决。

df <- data.frame(x = rnorm(2000), y = rnorm(2000))
 nrom <- ggplot2::ggplot(df, aes(x, y))
nrom + geom_point()

nrom + geom_point(shape = 1)

nrom + geom_point(shape = ".") ##点的大小为像素级

对于更大数据集产生的遮盖绘制问题,我们可以使用alpha混合(调整透明度)让点呈现透明效果

nrom + geom_point(colour = "black", alpha = 1/3)

若数据存在一定的离散型:

 

 

 

 

 

曲面图:

 

 

 

 

 

绘制地图:

library(maps)

library(ggplot2)

data(us.cities)

big_cities <- subset(us.cities, pop > 500000)

qplot(long, lat, data = big_cities) + borders("state", size = 0.5)

tx_cities <- subset(us.cities, country.etc == "TX")

ggplot(tx_cities, aes(long, lat)) + borders("county", "texas", colour = "grey70") +

  geom_point(colour = "black", alpha = 0.5)

等值线图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

揭示不确定性:

 

 

 

 

 

 

 

 

 

 

 

 

统计摘要:

 

 

 

 

 

 

 

 

 

 

 

添加图形注解:

unemp <- qplot(date, unemploy, data = economics, geom = "line", xlab = "", ylab = "No. unemployed (1000s)")

添加参考线:

unemp + geom_vline(xintercept = as.numeric(presidential$start),data = presidential)

xintercept 指定垂直参考线的位置

 

划分区间并填充颜色:

> library(scales)
> unemp + geom_rect(aes(NULL, NULL, xmin = presidential$start, xmax = presidential$end, fill = party), ymin = yrng[1], ymax = yrng[2], data = presidential, alpha = 0.2) + scale_fill_manual(values = c("blue", "red"))

 

在映射中mapping = aes()必须指定x,y,xmin,xmax,ymin,ymax,fill和alpha。xmin和xmax将x轴划分为区间间隔,同理ymin和ymax也是将y轴划分为区间间隔。fill将间隔填充为相应的颜色。alpha必须设置,否则我们只能看到不同颜色的带状图,而qplot创建的图像将被geom_rect掩盖。

 

在指定位置添加文字注释:

last_plot() + geom_text(mapping = aes(x = presidential$start, y = yrng[1], label = name), data = presidential, size = 3,hjust = 0, vjust = 0)

aes中x,y指定了文字注释的位置,label指定了注释的内容。hjust和vjust参数可以调整文字注释的位置。

 

添加指定的点:

> highest <- subset(economics, unemploy == max(unemploy))

> unemp + geom_point(data = highest, size = 3, colour = "red", alpha = 0.5)

 

>

含权数据:

qplot(percwhite, percbelowpoverty, data = midwest)

qplot(percwhite, percbelowpoverty, data = midwest, size = poptotal / 1e6) +scale_size_area("Population\n(millions)", breaks = c(0.5, 1, 2, 4))

lm_smooth <- geom_smooth(method = lm, size = 1)
qplot(percwhite, percbelowpoverty, data = midwest) + lm_smooth

qplot(percwhite, percbelowpoverty, data = midwest, weight = popdensity, size = popdensity) + lm_smooth

 

qplot(percbelowpoverty, data = midwest, binwidth = 1)

qplot(percbelowpoverty, data = midwest,weight = poptotal, binwidth = 1) + ylab("Population")

R语言—ggplot2包的简单教程 ggplot2包的简单教程 阅读详情

相关推荐

R语言ggplot2教程 十张图带你入门ggplot2

ggplot2入门教程,散点图、折线图、直方图柱状图

weixin_55798278的博客 1万+

ggplot2图形简单绘制

ggplot 简单绘图

qz的博客 1978

ggplot2学习笔记3:ggplot()基本用法

此博客作为自己的学习笔记,同时与大家交流分享! 首先明确一下ggplot()画出的图所具备的要素 数据:必须以数据框的形式作为参数 映射:呈现数据与视觉变量之间的关系(aesthetic mappings) 图层:展现数据可视化结果(geom()函数) 举例 利用qplot()小试牛刀一下,画一个以气缸数(cyl)分类的发动机排量(displ)和高速公路每加仑行驶的英里数(hwy)的散点图。 ...

Apple_xiaoli的博客 3077

R语言:ggplot2包详解及各类精美图形绘制

ggplot2是一个R包,用于生成统计或数据图形。与大多数其他图形包不同,ggplot2有一个基于图形语法的底层语法,允许通过组合独立的组件来组成图形。可以根据特定的问题创建新的图形,而不是局限于预定义的图形集,这就是ggplot2的强大之处。Ggplot2实际上很容易学习:有一组简单的核心原则,很少有特殊情况。

这也是计划的一部分的博客 1万+

ggplot2学习笔记2:ggplot()语法基础

此博客作为自己的学习笔记,同时与大家交流分享! 温馨提醒:查看目录请单击右侧从上往下数第四个图标! 语法这一部分有点难理解,只是看文字描述的概念不易懂,最好是能在画图过程中去理解体会,只有了解了语法,才能掌握ggplot2的精髓,画出的图才能高大上! #建立一个散点图 ...

Apple_xiaoli的博客 1561

ggplot2学习笔记4:绘制几何对象

ggplot2 名称 描述 名称 描述 abline 线,由斜率和截距决定 linerange 一条代表一个区间的竖直线 area 面积图(area plot) map 基准地图里的多边形 bar 条形图,以x轴为底的矩形 path 按数据的原始顺序连接各个观测值 bin2d 2维热图 point 点,用来绘制散点图 blank 空白,什么也不画 pointrang...

Apple_xiaoli的博客 1499

ggplot2学习笔记之标度scale

标度(scale),是将数据空间(标度的定义域)映射到图形属性空间(标度的值域) 的一个函数。 每一种图形属性都有一个默认的标度,当我们每一次使用这个图形属性时都会自动 添加到图形中。 图形属性 离散型 连续型 颜色(colour)和填充色(fill) brewer、grey、hue、identity、manual gradient、gradient2、gradientn

Bgods 2万+

ggplot2学习笔记(一)

今天在图书馆借到全新的《ggplot2:数据分析与图形艺术》,就从现在开始给它做笔记吧~ggplot2中的图形语法    图形语法中包含统计图形的所有部件:数据及其映射data &amp; mapping几何对象(点、线、条形等)geometric object,缩写为geom统计变换stats标度scale坐标系coord分面facet        2. qplot()函数数据集:ggplot...

qq_39775142的博客 686

ggplot2学习笔记之颜色标度

除了位置标度之外,最常用的图形属性就是颜色了。对于连续型变量有三种基于渐变的方法,对于离散型有两种方法。rgb 编码的色彩空间使用了红、绿、蓝三种光的强度来表示一种颜色,这种色彩空间存在个问题:视觉感知上不均匀。这里使用的是hcl 色彩空间的现代方案,它分别由色相(hue)、彩度(chroma)、明度(luminance)三部分构成。 以下标度对边界色(co...

Bgods 6万+

R语言入门第五天:《R语言实战》第四章学习笔记——ggplot2绘图入门

从ggplot2开始正式入门!

jilinzhang7710的博客 885

ggplot2数据分析与图形艺术(学习笔记)

0828 https://github.com/hadley/ggplot2-book Chapter 2 Chapter 2 ggplot2 入门 ggplot2图像的三个基本构成 1.数据 2.图形属性映射,设定变量如何射映到图层的图形属性上 3.几何对象,至少一层,用于指定绘图所用的几何对象 ggplot(mpg,aes(x = displ,y = hwy))+geom_point() ggplot(economics,aes(date,unemploy))+geom_line()

一台没有感情的知识吸尘器 779

ggplot2设置坐标轴范围_ggplot2学习笔记之图形排列

作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源又到了亲爱的严涛老师时间:诺奖文章里面的动图绘制教程来了!!R包ggseqlogo|绘制序列分析图ggplot2高效实用指南(可视化脚本、工具、套路、配色)ComplexHeatmap |理解绘图逻辑绘制热图R语言可视化学习笔记之ggridges包简介R语言基本绘图函数中可以利用par()以及la...

weixin_39952937的博客 2301

ggplot2学习笔记5:工具箱(一)基础图层、标签、注释、群组几何对象、曲面图

首先我们来明确一下**使用图层的目的**是什么 1. 显示**数据**(data):绘图时的最底层(数据层),显示数据有助于我们改进模型; 2. 显示数据的**统计摘要**(statistical summary):在数据背景下展示模型的统计预测效果,模型层通常绘制在数据层之上,有助于揭示我们可能错过的数据的细微之处; 3. 添加其他**元数据**(metadata):上下文、注释和引用。

Apple_xiaoli的博客 1632

ggplot2 学习笔记

最近发现了一个文艺作图系统:ggplot2 是统计软件R下面的一个包,作者Hadley Wickham现在在Rice University当Assistant Professor R本来的作图系统已经很强大了,但是我看到ggplot2的输出结果真的是惊为天人啊,而且它的图层概念也非常赞。可以说R的graphics包是普通作图,ggplot2是文艺作图,而SAS之类的就是二逼作图了(这里断没

lhy55040817的专栏 1万+

R语言ggplot2包学习笔记

逐步记载学习ggplot的过程,以供自查

weixin_44597588的博客 1362

R可视化15|《ggplot2:数据分析与图形艺术》最新版(第三版)笔记合集

《ggplot2:数据分析与图形艺术》最新版(第三版)笔记合集

qq_21478261的博客 966

ggplot2学习笔记之构建图层

传统的画图函数(如plot、qplot)就好比在一张画布上画图,画好之后不能修改,而且只能使用一个数据集;而图层的思想是在多张透明的画布上绘图,再把这些画布按顺序叠加在一起形成一个完整的图形。每一张画布都可以使用不同数据集,可以单独对每一个图层进行修改,需要到哪些图层就画哪些图层。1.创建绘图对象在用 ggpot()绘制时,需先创建绘图对象,也就是第一个图层,它包含两个参数(数据与图形属性映射)。

Bgods 5506

3GPP协议解读_NTN系列(一)_38.811_非地面网络(NTN)的背景、应用场景和信道建模

非地面网络覆盖广,对物理攻击和自然灾害有一定的抵抗性。本文根据3GPP协议对NTN网络的背景、应用场景和信道模型进行了整理。

JCMLSY的博客 4924

ggplot2学习笔记系列之利用ggplot2绘制误差棒及显著性标记

作者简介Introductiontaoyan:伪码农,R语言爱好者,爱开源。个人博客: https://ytlogos.github.io/公众号:生信大课堂往期回顾R语言学习笔记之聚类分析R语言可视化学习笔记之ggpubr包R语言可视化学习笔记之添加p-value和显著性标记R语言可视化学习笔记之相关矩阵可视化包ggcorrplotR语言可视化学习笔记之ggrepel包R语言学习笔记之相关性矩阵

R语言中文社区 1万+

Type-c超声波切割刀

接下来,我将提供Type-C超声波切割刀项目的C代码实现示例,代码将按照上述分层架构和模块化设计进行组织。为了达到3000行以上的代码量,我将尽可能详细地实现各个模块的功能,并添加必要的注释和错误处理。通过采用分层架构和模块化设计,我们可以建立一个可靠、高效、可扩展的系统平台,为产品的成功奠定坚实的基础。实际项目中,需要更详细的硬件驱动、更完善的功能模块、更严格的测试验证和更周全的维护升级计划。针对Type-C超声波切割刀这个项目,我将从以下几个方面详细阐述最适合的代码设计架构,并提供具体的C代码实现。

lianmengde的博客 1189

X光安检模型训练第一步:手把手教你处理OPIXray和HIXray这两个小众数据集

本文详细解析了X光安检AI模型训练的关键步骤,重点介绍如何处理OPIXray和HIXray这两个专业数据集。从数据格式转换到YOLO标准,再到数据增强和质量验证,手把手指导开发者高效利用这些数据集进行目标检测模型训练,提升安检场景下的危险物品识别准确率。

weixin_32629853的博客 316
上一篇: R语言字符串处理函数—strwrap
下一篇: notepad++和TDM gcc搭建c/c++环境
Intelligebce
博客等级 码龄10年 21粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值