ggplot2图形简单绘制

news2025/7/18 7:12:44

文章目录

  • 一、所用函数
    • 1. sort、rank、order用法
    • 2. arrange 用法
    • 3. reorder用法
    • 4. cumsum 用法
    • 5. interaction用法
  • 二、散点图
  • 三、折线图、直方图、箱线图
  • 四、柱状图
    • 1. 单一变量 (统计单一变量的属性值分布)
    • 2. 单一变量+fill (列联表)
    • 3. 两个变量
    • 4. 两个变量+fill
    • 5. 修改描边和填充颜色
    • 6. 修改颜色模式
    • 7. 柱状图按照高低排序
    • 7. 调节柱宽
      • 7.1 普通柱状图
      • 7.2 分组柱状图
    • 8. 添加文本标签
      • 8.1 普通柱状图
      • 8.2 分组柱状图
      • 8.3 堆积柱状图
      • 8.4 添加单位

一、所用函数

1. sort、rank、order用法

#在R中,和排序相关的函数主要有三个:sort(),rank(),order()。 
#sort(x)是对向量x进行排序,返回值排序后的数值向量。
#rank()是求秩的函数,它的返回值是这个向量中对应元素的“排名”
#order()的返回值是对应“排名”的元素所在向量中的位置。
x<-c(97,93,85,74,32,100,99,67)
sort(x)
[1]  32  67  74  85  93  97  99 100
order(x)
[1] 5 8 4 3 2 1 7 6
rank(x)
[1] 6 5 4 3 1 8 7 2

2. arrange 用法

arrange()函数用于在逻辑表达式下对表行进行重新排序。是plyr包中的,对数据框按列排序,仍返回数据框 。参数如下,
- x : 要重新排序的数据集
- expr :带有列名的逻辑表达式
- 示例

# Create a data frame 
d <- data.frame( name = c("Abhi", "Bhavesh", "Chaman", "Dimri"),  
                 age = c(7, 5, 9, 16) )     
# Arranging name according to the age 
d.name <- arrange(d, age) 
print(d.name) 

在这里插入图片描述

3. reorder用法

reorder用在绘图中,比如ggplot中绘条形图,可使x轴按y轴数值大小排序
比如横轴为age,纵轴为money,可写为:aes(x=reorder(age,money),y=money),即按money对age排序

4. cumsum 用法

cumsum函数用于计算向量的累积和

# Creating Vectors
x1 <- c(2, 4, 5, 7)
x2 <- c(2.4, 5.6, 3.4)
  
# Calling cumsum() Function
cumsum(x1)
cumsum(x2)

在这里插入图片描述

5. interaction用法

interaction函数产生不同变量之间的交互,假设我有3个不同的因素要考虑: a,b和c,并且我想创建一个新的变量,以显示这三个因素对于特定观察的特定组合。sep参数更改字符’.’
在这里插入图片描述

二、散点图

数据集选择R中自带的mrcars 数据集

  1. 使用str() 函数观察属性类型
    在这里插入图片描述
    全部变量为连续型

  2. 颜色变量为连续性

    • mtcars为数据集
    • x轴选择wt变量,y轴选择mpg变量
    • 设置cyl变量为颜色变量
    ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point(aes(color=cyl))
    

    在这里插入图片描述

  3. 颜色变量为离散变量

    • 使用factor() 函数将连续值转换为因子型
    ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point(aes(color=factor(cyl)))
    

    在这里插入图片描述

三、折线图、直方图、箱线图

  • 折线图:ggplot(pressure, aes(temperature, pressure)) + geom_line() + geom_point()

  • 直方图 : 特殊的直方图,连续变量的分布,横坐标分段来统计分段内个数

    # bindwidth为横坐标分段的组距
    ggplot(mtcars, aes(mpg)) + geom_histogram(binwidth = 3)
    
  • 箱线图

    ggplot(data = ToothGrowth, aes(supp, len)) + geom_boxplot()
    # 分组箱线图用interaction函数
    ggplot(data = ToothGrowth, aes(interaction(supp,dose), len)) + geom_boxplot()
    

四、柱状图

1. 单一变量 (统计单一变量的属性值分布)

ggplot(mtcars, aes(factor(cyl))) + geom_bar()

  • 当绘制柱状图时,只传一个变量参数时,即为统计当前变量中各个属性值的个数
  • geom_bar() 函数中stat参数默认为count
  • cyl变量经过factor操作 : 若x轴为连续值则会不连贯,例如下图
    在这里插入图片描述
    • 绘图结果如下

在这里插入图片描述

2. 单一变量+fill (列联表)

设置填充颜色fillCultivar变量
ggplot(cabbage_exp, aes(Date, fill = Cultivar)) + geom_bar(position = 'dodge')
其中,geom_barposition 参数如下,

  • identity : 不堆积,组内前后堆叠
  • stack : 堆积,默认值
  • dodge : 分散
  • fill : 按比例堆积
    在这里插入图片描述

3. 两个变量

ggplot(BOD, aes(factor(Time), demand)) + geom_bar(stat = 'identity'),相比统计单个变量,

  • aes函数中为两个变量
  • geom_bar函数中stat设置为 identity
  • 绘制结果如下
    在这里插入图片描述

4. 两个变量+fill

# 筛选Change>40的条目
upc <- subset(uspopchange, rank(Change)>40)
ggplot(upc, aes(Abb, Change, fill = Region)) + geom_bar(stat = 'identity')

在这里插入图片描述

5. 修改描边和填充颜色

ggplot(pg_mean, aes(group, weight)) + geom_bar(stat = 'identity', fill = 'lightblue', color = 'black')

  • 描边设置 color 参数
  • 填充颜色为 fill 参数

6. 修改颜色模式

# 通过scale_fill_brewer() 修改填充颜色模式
# 通过scale_colour_brewer() 修改描边颜色模式
ggplot(cabbage_exp, aes(Date,Weight,fill = Cultivar)) + 
                    geom_bar(position = 'dodge', stat = 'identity', color = 'black') + 
                    scale_fill_brewer(palette = 'Pastel1')
# 查看调色板 
RColorBrewer::display.brewer.all()

7. 柱状图按照高低排序

  • 使用reorder函数进行排序 : aes(x=reorder(Abb, Change),y=Change, fill = Region))
  • scale_fill_manual 函数自行设置颜色
  • xlab函数设置x轴标签
# 使用reorder函数,将其按高度进行排序
ggplot(upc, aes(x=reorder(Abb, Change),y=Change, fill = Region)) + geom_bar(stat = 'identity') + 
                                            scale_fill_manual(values = c('#669933','#FFCC66')) + 
                                            xlab('State') 

在这里插入图片描述

7. 调节柱宽

7.1 普通柱状图

#---------------------------------------#
# 调节柱宽是调节柱子本身的宽度
# width 参数默认为0.9,最大为1,最小为0
# 柱宽变大,柱间距就会变小
#---------------------------------------#
ggplot(pg_mean, aes(x=group, y=weight)) + geom_bar(stat = 'identity', width = 0.2)

在这里插入图片描述

7.2 分组柱状图

#---------------------------------------#
# 分组条形图调节柱宽
# 默认同一分组之间的柱是没有间距的
# 		在geom_bar 参数中设置: position=position_dodge()
# width表示柱宽,默认0.9,最大为1,最小为0
# position_dodge表示组内间距,默认为0.9,越大表示间距越大
#---------------------------------------#
ggplot(cabbage_exp, aes(Date, Weight, fill=Cultivar)) + 
                    geom_bar(stat = 'identity', width = 0.9, position = position_dodge(0.5))

在这里插入图片描述

8. 添加文本标签

8.1 普通柱状图

#-------------------------------------------------#
# 柱状图加文字标签
# 使用geom_text
#     1. 参数aes():设置标签变量
#     2. 参数vjust: 0表示标签底部与柱状图顶部对齐
#                   正数表示在柱状图顶部下方
#                   负数表示在柱状图顶部上方
#        参数colour:表示文本颜色 
#------------------------------------------------#
# interaction() 函数的使用
# > interaction(cabbage_exp$Date,cabbage_exp$Cultivar)
# [1] d16.c39 d20.c39 d21.c39 d16.c52 d20.c52 d21.c52
# Levels: d16.c52 d20.c52 d21.c52 d16.c39 d20.c39 d21.c39
ggplot(cabbage_exp, aes(interaction(Date, Cultivar),Weight)) + 
                          geom_bar(stat = 'identity') + 
                          geom_text(aes(label=Weight), vjust=1.5, colour = 'white')
# 防止标签超出图例,可以调整y轴的范围
# 方法1:ylim()函数
ggplot(cabbage_exp, aes(interaction(Date, Cultivar),Weight)) + 
                          geom_bar(stat = 'identity') + 
                          geom_text(aes(label = Weight), vjust = -0.2) + 
                          ylim(0, max(cabbage_exp$Weight) * 1.05)
# 方法2 : 不使用vjust参数,而是以weight为基准,调节y值,图形高度自动适配
#     其中y值为文本标签的高度
ggplot(cabbage_exp, aes(interaction(Date, Cultivar),Weight)) + 
                          geom_bar(stat = 'identity') + 
                          geom_text(aes(y = Weight - 0.1, label = Weight))

8.2 分组柱状图

# 分组柱状图加标签,需要设定 position_dodge():调节同一分组的间距,以调整字体的合适位置
# 在geom_text中设置position = position_dodge(.9) 为了调节柱宽和组间距
# width表示柱宽,默认0.9,最大为1,最小为0
# position_dodge表示组内间距,默认为0.9,越大表示间距越大
ggplot(cabbage_exp, aes(Date,Weight, fill = Cultivar)) + 
                         geom_bar(stat = 'identity', position = 'dodge',width = 0.9) + 
                         geom_text(aes(label=Weight), 
                                   vjust = 1.5, 
                                   color= 'white',
                                   position = position_dodge(.9),
                                   size=7)

8.3 堆积柱状图

#堆积柱状图添加label
library(plyr)
# arrange () R语言中的函数用于在列名作为传递给函数的表达式的帮助下对表行进行重新排序
ce <- arrange(cabbage_exp, Date, Cultivar)
# cumsum() 函数用于计算累加和
ce <- ddply(ce, .(Date), transform, label_y=cumsum(Weight))
ce$Cultivar <- factor(ce$Cultivar, levels = c('c39','c52'))
ggplot(ce, aes(x=Date, y=Weight, fill=Cultivar)) + 
                            geom_bar(stat = 'identity') + 
                            geom_text(aes(y=label_y-0.1, label=Weight), colour='white')

8.4 添加单位

# 添加单位
# format()函数的格式化为特定样式: nsmall参数为小数点右边位数,不够补零
ggplot(ce, aes(Date, Weight, fill=Cultivar)) + 
                            geom_bar(stat = 'identity',color='black') + 
                            geom_text(aes(y=label_y - 0.1,
                                          label=paste(format(Weight, nsmall=2),'kg')
                                          ), size=4 )+
                            scale_fill_brewer(palette = 'Pastel1')

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

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

相关文章

mybatis详解

学习到现在,作为我们的java萌新来说,是时候来学习一点偷懒的武林秘籍了,今天我给大家介绍的就是在无上秘宝--mybatis持久型框架. 学习一个东西之前,我们得首先了解他的前世今生... 前世:原是Apache的一个开源项目iBatis, 2010年6月这个项目由ApacheSoftware Foundation 迁移到…

SQL注入靶机练习:BUU SQL COURSE 1

SQL注入靶机练习&#xff1a;BUU SQL COURSE 1一、SQL注入知识点二、前置知识三、SQL注入测试的一般步骤四、解题过程一、SQL注入知识点 可参考SQL注入详解 二、前置知识 参考来源&#xff1a;渗透攻防Web篇-深入浅出SQL注入 mysql5.0以上版本中存在一个重要的系统数据…

无敌,全面对标字节跳动2-2:算法与数据结构突击手册(leetcode)

学习是一种基础性的能力。然而&#xff0c;“吾生也有涯&#xff0c;而知也无涯。”&#xff0c;如果学习不注意方法&#xff0c;则会“以有涯随无涯&#xff0c;殆矣”。 学习就像吃饭睡觉一样&#xff0c;是人的一种本能&#xff0c;人人都有学习的能力。我们在刚出生的时候…

某城市道路桥梁设计计算书+cad图纸

第一章 工程概述 41 1.1设计题目 41 1.2 设计资料 42 1&#xff0e;3 桥梁设计的基本要求 42 1.3.1 使用上的要求&#xff1a; 42 1.3.2 经济上的要求&#xff1a; 42 1.3.3 结构和尺寸上的要求&#xff1a; 42 1.3.4 施工上的要求&#xff1a; 42 1.3.5美观上的要求&#xff1…

Aspose.PDF for Java Crack by Xacker

Aspose.PDF for Java 是一个本地库&#xff0c;使开发人员能够将 PDF 处理功能添加到他们的应用程序中。API 可用于构建任何类型的 32 位和 64 位应用程序&#xff0c;以在不使用 Adob​​e Acrobat 的情况下生成或读取、转换和操作 PDF 文件。 Aspose.PDF for Java API 允许执…

嵌入式(驱动开发)(内核内存管理)

一、内核内存管理框架 内核将物理内存等分成N块4KB&#xff0c;称之为一页&#xff0c;每页都用一个struct page来表示&#xff0c;采用伙伴关系算法维护 内核地址空间划分图&#xff1a; 3G~3G896M&#xff1a;低端内存&#xff0c;直接映射 虚拟地址 3G 物理地址 ​ 细…

Disk Drill for Mac v5.0.1043 苹果数据恢复软件

Disk Drill Enterprise for Mac&#xff0c;数据恢复软件&#xff0c;Disk Drill for Mac 解锁钥匙&#xff0c;Disk Drill for Mac序列号&#xff0c;顶尖的Mac数据恢复软件&#xff0c;你需要恢复在Mac OS X中已经删除的文件吗&#xff1f;比如重要商业文档、音乐、图片或者视…

Linux开发工具(5)——git

文章目录git版本控制器git是什么git的操作clone仓库到本地上传本地文件到gitgit版本控制器 git是什么 标题也说了git就是一个版本控制器&#xff0c;版本控制器是用来保存一个文件的历史版本&#xff0c;如果有需要可以进行回溯&#xff0c;也就是取得以前编辑完成的版本。 比…

Flutter基础知识

const 常量构造函数&#xff0c;如果控件是&#xff0c;则前面加&#xff1b;如果常量构造函数包含有非常量构造函数&#xff0c;则不加&#xff0c;内部是的控件单独加 1.Flutter学习网址 Flutter 中文官网 https://flutter.cn/ Flutter 官网&#xff1a;https://flutter.de…

移动WEB开发之流式布局--移动端基础

浏览器现状 PC端常见浏览器 360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器、搜狗浏览器、IE浏览器。 移动端常见浏览器 UC浏览器&#xff0c;QQ浏览器&#xff0c;欧朋浏览器&#xff0c; 百度手机浏览器&#xff0c;360安全浏览器&#xff0c;谷歌 浏览器&…

数学建模笔记

文章目录层次分析法——评价类问题原理代码插值算法原理代码拟合算法原理代码相关系数person 相关系数spearman 相关系数二分类和多分类二分类逻辑回归费希尔判别多分类Fisher判别聚类模型分析时间序列分析层次分析法——评价类问题 原理 1. 首先确定评价的目标&#xff0c;可…

智慧医院解决方案-最新全套文件

智慧医院解决方案-最新全套文件一、背景概述二、建设面临的挑战1、网络安全威胁2、关键业务宕机风险3、核心业务数据丢失风险三、总体建设架构四、建设方案五、获取 - 智慧医院全套最新解决方案合集一、背景概述 医院医疗信息化建设已走过两个阶段&#xff1a;第1阶段就是建立…

Java阻塞队列中的异类,SynchronousQueue底层实现原理剖析

上篇文章谈到BlockingQueue的使用场景&#xff0c;并重点分析了ArrayBlockingQueue的实现原理&#xff0c;了解到ArrayBlockingQueue底层是基于数组实现的阻塞队列。 但是BlockingQueue的实现类中&#xff0c;有一种阻塞队列比较特殊&#xff0c;就是SynchronousQueue&#xf…

mysql的服启动以及用户登录

目录 1.mysql的启动 A.使用电脑图形化界面打开 B.使用命令行 2.数据库的登录 A.使用命令行加密码直接登录 B.使用命令行再后面输入密码实现登录 C.访问同一台电脑上的不同数据库 D.访问其他主机上的数据库 E.退出mysql 1.mysql的启动 A.使用电脑图形化界面打开 在电脑当中…

Spring MVC面试题

什么是Spring MVC&#xff1f;简单介绍下你对Spring MVC的理解&#xff1f; SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架&#xff0c;把复杂的web应用分成逻辑清晰的表示层、控制层、业务层&#xff08;服务层&#xff09;、持久层&#xff0c;…

谈谈从DAMA、DCMM和DGI三大数据治理框架详细了解数据战略规划的关键要素

当前,数据作为新的生产要素提到了关键位置,众多组织认为数据是重要的战略资产。可是,如何发挥数据要素的生产力,数据资产又如何为企业创造价值,确有些无从下手。那么,这就是数据战略要解决的问题。企业怎么看待数据资产、数据的价值如何定位,对数据价值的期望是什么,数…

javaweb 之 会话技术 Cookie Session 登录注册案例 验证码

会话跟踪技术 会话&#xff1a;用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应 会话跟踪&#xff1a;一种维护浏览器状态的方法&#xff0c;服务器需要识别多次…

《面试系列篇》——11种常用的设计模式

目录 【一】前言 【二】单例模式 2.1概念 2.2 饿汉模式 2.3 懒汉模式 多线程版本&#xff1a; 【三】简单工厂模式 【四】工厂方法模式 【五】抽象工厂模式 【六】策略模式 【七】装饰模式 7.1 定义 7.2 使用示例 【八】代理模式 8.1 定义 8.2 使用的优势 8.3…

【机器学习】岭回归和LASSO回归详解以及相关计算实例-加利福尼亚的房价数据集、红酒数据集

文章目录一,岭回归和LASSO回归1.1 多重共线性1.2 岭回归接手1.3 线性回归的漏洞&#xff08;线性系数的矛盾解释&#xff09;1.4 Ridge Regression1.5 岭回归实例&#xff08;加利福尼亚的房价数据集&#xff09;1.6 MSE1.7 LASSO1.8 Ridge岭回归和Lasso套索回归的比较1.9 Lass…

H5基本开发2——(HTML常见标签)

常见标签说明 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <meta http-equiv"X-UA-Compatible&q…