R语言基础画图/绘图/作图

2023-05-16

R语言基础画图

R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介绍。

0 结构

每种图形构成一个section,每个部分大致三部分构成,分别是R语言标准画图代码,R语言画图实例,和画图结果。
R语言标准画图代码帮助你可以直接使用:help(funciton)查找,实例数据基本都来自内置包的数据,好了,直接切入主图,从最简单的点图开始吧。

1 点图

点图,简单的讲就是每个数据点按照其对应的横纵坐标位置对应在坐标系中的图形,什么是点图就不做过多介绍了。

  • 点图标准代码
 dotchart(x, labels = NULL, groups = NULL, gdata = NULL,
         cex = par("cex"), pt.cex = cex,
         pch = 21, gpch = 21, bg = par("bg"),
         color = par("fg"), gcolor = par("fg"), lcolor = "gray",
         xlim = range(x[is.finite(x)]),
         main = NULL, xlab = NULL, ylab = NULL, ...)      

x是数据来源,也就是要作图的数据;labels 是数据标签,groups分组或分类方式,gdata分组的值,cex字体大小,pch是作图线条类型,bg背景,color颜色,xlim横坐标范围,main是图形标题,xlab横坐标标签,相应的ylab是纵坐标。


- 实例
eg1.1:

dotchart(mtcars$mpg,labels = row.names(mtcars),cex = .7,
         main = "Gas Mileage for Car Models",
         xlab = "Miles Per gallon")

mtcar是内置包中的一个数据,将mtcar中每加仑油的里程(mpg,miles per gallon)作为要描述的对象,用点图展现出来,将行名作为点图标签,字体大小是正常大小的0.7,标题“Gas Mileage for Car Models”,x轴标签”Miles Per gallon”。
运行结果(run 或者Ctrl + Enter快捷键)如图所示:


这里写图片描述
散点图1.1

eg1.2:
现在觉得这个图太散乱了,希望这个图能够经过排序,想要按照油缸数(cyl)进行分组并且用不同的颜显示。(注:#是R语言中的行注释,并且只有行注释,运行时系统会自动跳过#后面的内容)

x <- mtcars[order(mtcars$mpg),]        #按照mpg排序
x$cyl <-factor(x$cyl)      #将cyl变成因子数据结构类型
x$color[x$cyl==4] <-"red"   #新建一个color变量,油缸数cyl不同,颜色不同
x$color[x$cyl==6] <-"blue"
x$color[x$cyl==8] <-"darkgreen"
dotchart(x$mpg,        #数据对象
         labels = row.names(x),     #标签
         cex = .7,#字体大小
         groups = x$cyl,      #按照cyl分组
         gcolor = "black",    #分组颜色
         color = x$color,     #数据点颜色
         pch = 19,#点类型
         main = "Gas Mileage for car modes \n grouped by cylinder",    #标题
         xlab = "miles per gallon")     #x轴标签

run后结果如下:


这里写图片描述
散点图1.2

是不是好看多了,嘻嘻!按照油缸数不同进行了分类,并且可以看出油缸数量越多越耗油。

2 直方图

2.1 直方图

小学生都知道的条形图,怎么弄?

  • 条形图标准代码:
barplot(height, ...)

是太简单了吗?这么粗暴,就给了一个变量。

  • 实例
    eg2.1.1
library(vcd)
counts <- table(Arthritis$Improved)    #引入vcd包只是想要Arthritis中的数据
barplot(counts,main = "bar plot",xlab = "improved",ylab = "counts")

结果2.1.1:


这里写图片描述
条形图2.1.1

eg2.1.2

barplot(counts,main = " horizontal bar plot",
xlab = "frequency",
ylab = "improved",
horiz = TRUE)#horizon 值默认是FALSE,为TRUE的时候表示图形变为水平的

图形结果:


这里写图片描述
条形图2.1.2

eg2.1.3 进阶
数据来源:vcd包中的Arthritis,风湿性关节炎研究结果数据,如果没有安装vcd包,需要先安装,install.packages("vcd"),然后用library引用包vcd,

install.packages("vcd")
library(vcd)
counts <- table(Arthritis$Improved,Arthritis$Treatment)
counts

数据如下所示:

PlaceboTreated
None29
Some7
Marked7

代码:
eg 2.1.3.1

barplot(counts,main = " stacked bar plot",xlab = "treated",ylab = "frequency",
        col = c("red","yellow","green"),       #设置颜色
        legend = rownames(counts))       #设置图例

结果2.1.3.1:


这里写图片描述
2.1.3.1堆砌条形图

  • 代码
    eg2.1.3.2
barplot(counts,main = " grouped bar plot",xlab = "treated",ylab = "frequency",
        col = c("red","yellow","green"),
        legend = rownames(counts),beside = TRUE)

结果2.1.3.2


这里写图片描述
分组条形图2.1.3.2

请注意,两幅图的区别在于2.1.3.2设置了beside = TRUE,beside默认值是FALSE,绘图结果是堆砌条形图,beside值为TRUE时,结果是分组条形图。

2.2**荆棘图**

荆棘图是对堆砌条形图的扩展,每个条形图高度都是1,因此高度就表示其比例。
- 实例
代码
eg2.2:

library(vcd)
attach(Arthritis)
counts <- table (Treatment,Improved)
spine(counts,main = "Spinogram Example")
detach(Arthritis)

结果:


这里写图片描述
荆棘图2.2

3 直方图

  • 直方图标准代码:
hist(x, ...)

也是简单地可以哈?
- 实例
我们使用par设置图形参数,用mfrow将四幅图放在一起。
代码
eg3.1:

par (mfrow = c(2,2))        #设置四幅图片一起显示
hist(mtcars$mpg)       #基本直方图

hist(mtcars$mpg,
     breaks = 12,       #指定组数
     col= "red",        #指定颜色
     xlab = "Miles per Gallon",
     main = "colored histogram with 12 bins")

hist(mtcars$mpg,
     freq = FALSE,      #表示不按照频数绘图
     breaks = 12,
     col = "red",
     xlab = "Miles per Gallon",
     main = "Histogram,rug plot,density curve")
rug(jitter(mtcars$mpg))        #添加轴须图
lines(density(mtcars$mpg),col= "blue",lwd=2)       #添加密度曲线

x <-mtcars$mpg
h <-hist(x,breaks = 12,
         col = "red",
         xlab = "Miles per Gallon",
         main = "Histogram with normal and box")
xfit <- seq(min(x),max(x),length=40)
yfit <-dnorm(xfit,mean = mean(x),sd=sd(x))
yfit <- yfit *diff(h$mids[1:2])*length(x)
lines(xfit,yfit,col="blue",lwd=2)       #添加正太分布密度曲线
box()               #添加方框

结果:


这里写图片描述
直方图3.1

4 饼图

  • 标准饼图代码:
pie(x, labels = names(x), edges = 200, radius = 0.8,
    clockwise = FALSE, init.angle = if(clockwise) 90 else 0,
    density = NULL, angle = 45, col = NULL, border = NULL,
    lty = NULL, main = NULL, ...)
  • 实例
    eg4.1
par(mfrow = c(2,2))
slices <- c(10,12,4,16,8)       #数据
lbls <- c("US","UK","Australis","Germany","France")         #标签数据
pie(slices,lbls)        #基本饼图

pct <- round(slices/sum(slices)*100)        #数据比例
lbls2 <- paste(lbls," ",pct ,"%",sep = "")
pie(slices,labels = lbls2,col = rainbow(length(lbls2)),         #rainbow是一个彩虹色调色板
    main = "Pie Chart with Percentages")

library(plotrix)
pie3D(slices,labels=lbls,explode=0.1,main="3D pie chart")       #三维饼图

mytable <- table (state.region)
lbls3 <- paste(names(mytable),"\n",mytable,sep = "")
pie(mytable,labels = lbls3,
    main = "pie  chart from a table \n (with sample sizes")

结果:


这里写图片描述
4.1 饼状图

5 箱线图

5.1 箱线图

  • 标准箱线图代码:
boxplot(x, ...)
  • 实例
    eg5.1
boxplot(mtcars$mpg,main="Box plot",ylab ="Miles per Gallon")       #标准箱线图

boxplot(mpg ~ cyl,data= mtcars,
       main="car milesge data",
       xlab= "Number of cylinders",
       ylab= "Miles per Gallon")

boxplot(mpg ~ cyl,data= mtcars,
        notch=TRUE,         #含有凹槽的箱线图
        varwidth = TRUE,        #宽度和样本大小成正比
        col= "red",
        main="car milesge data",
        xlab= "Number of cylinders",
        ylab= "Miles per Gallon")

mtcars$cyl.f<- factor(mtcars$cyl,         #转换成因子结构
                      levels= c(4,6,8),
                      labels = c("4","6","8"))
mtcars$am.f <- factor(mtcars$am,levels = c(0,1),
                      labels = c("auto","standard"))
boxplot(mpg~ am.f*cyl.f,       #分组的箱线图
        data = mtcars,
        varwidth=TRUE,
        col= c("gold","darkgreen"),
        main= "MPG Distribution by Auto Type",
        xlab="Auto Type",
        ylxb="Miles per Gallon")

结果:


这里写图片描述
5.1 箱线图

5.2 小提琴图

小提琴图是箱线图和密度图的结合。使用vioplot包中的vioplot函数进行绘图。

  • 小提琴图标准代码:
vioplot( x, ..., range=1.5, h, ylim, names, horizontal=FALSE, 
  col="magenta", border="black", lty=1, lwd=1, rectCol="black", 
  colMed="white", pchMed=19, at, add=FALSE, wex=1, 
  drawRect=TRUE)
  • 实例
    代码:
    eg5.2
library(vioplot)
x1 <- mtcars$mpg[mtcars$cyl==4]
x2 <- mtcars$mpg[mtcars$cyl==6]
x3 <- mtcars$mpg[mtcars$cyl==8]
vioplot(x1,x2,x3,names= c("4 cyl","6 cyl","8 cyl"),col = "gold")
title(main="Violin plots of Miles Per Gallon",xlab = "number of cylinders",ylab = "Miles per gallon")

结果:

这里写图片描述
5.2 小提琴图

白点是中位数,中间细线表示须,粗线对应上下四分位点,外部形状是其分布核密度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言基础画图/绘图/作图 的相关文章

随机推荐

  • sqlitespy怎么打开.db数据库文件

    百度搜索SQLiteSpy xff0c 下载 双击打开SQLiteSpy 点File Open DataBase 找到要打开的 db数据库文件 xff0c 点打开 这样数据库就打开了 xff0c 可以看到左侧表 右键点击一个表 Show D
  • OSI/ISO详解

    前段时间学习的需要 xff0c 在论坛泡了几天 xff0c 加上自己的看法 xff0c 总结出了这个详解 当然其中很多是从论坛里面搬运过来 xff0c 所以如有错误之处 xff0c 还望各位积极指正 一 OSI模型概述 xff1a 1概念
  • 使用wsl命令迁移WSL。

    1 打开CMD xff0c 查看所有WSL 执行 xff1a wsl l all v 显示 xff1a Windows Subsystem for Linux Distributions Ubuntu 20 04 Default 2 导出W
  • 使用脚本重启WSL(ubuntu)。

    1 创建 重启脚本文件 bat cmd 编辑脚本 xff0c 输入 xff1a net stop LxssManager net start LxssManager 保存关闭 2 运行脚本 脚本运行需要管理员权限 解决方法 xff1a xf
  • C# winform treeview GDI+流程连线 流程图 树形流程图

    C winform treeview GDI 43 流程连线 流程图 树形流程图 TreeView Paint的方法呈现效果 xff0c 具体如下 1 点击连线按钮开始准备连线 2 点击第一个连线的起始节点 3 再点击第二个连线的结束节点
  • 使用STM32寄存器点亮LED流水灯

    目录 一 什么是寄存器GPIO 二 使用寄存器点亮LED灯1 建立工程模板1 1 建立相关文件1 2 建立工程1 3 配置环境 2 配置GPIO端口2 1 配置时钟使能2 2 初始化结构体2 3 配置输入输出模式 3 主要函数3 1 led
  • frp内网穿透—将kali代理在公网中进行渗透测试

    文章目录 前言Frp简介准备工具实现内网穿透frp服务端配置frp客户端配置 测试HTTP服务测试ssh服务测试反弹shell测试 注意 前言 由于工作常需要用到kali xff0c 但是公网服务器并没有安装kali镜像 xff0c 本地只
  • 最小二乘法解的矩阵形式推导

    最小二乘法解的矩阵形式推导 首先 xff0c 什么是最小二乘 xff1f 维基百科给出了一个定义 xff0c 戳这里 在我看来 xff0c 最小二乘法是一种数据拟合方法 我们从矩阵的角度来理解 xff1a 首先我们给出一个矩阵中的定义 xf
  • pytesseract识别数字

    针对工程需求精度不够 xff0c 目前只能识别率为86 左右 用tesseract的深度学习可能会好一点 xff0c 没搞懂怎么用 xff1f 单张图片 import cv2 import numpy as np import matplo
  • Arduino利用NTPClient库获取网络时间,显示时间与实时时间不同步

    网络时间协议 xff08 Network Time Protocol xff0c NTP xff09 是用来使计算机时间同步化的一种协议 xff0c 它可以 使计算机对其服务器或时钟源 xff08 如石英钟 xff0c GPS等等 做同步化
  • 【C++】链表反转逆序|建立、删除、修改、插入|linux内核链表与普通链表

    目录 C 43 43 实现链表逆序 链表的建立 删除 修改 插入 linux内核链表与普通链表 C 43 43 实现链表逆序 实现链表逆序 xff0c 首先要有一个链表 xff0c 下面是链表的结构体 xff1a typedef struc
  • https 自签名SSL证书

    介绍 TLS或称传输层安全性 xff0c 及其前身SSL xff08 代表安全套接字层 xff09 是用于将正常流量包装在受保护的加密包装中的Web协议 使用这种技术 xff0c 服务器可以在服务器和客户端之间安全地发送流量 xff0c 而
  • Gitlab安装及配置

    主要内容 xff1a 使用docker运行 gitlab xff1b 配置LDAP及邮箱 xff1b 配置管理员账号 xff1b 配置邮箱通知 xff1b 关闭用户注册 xff1b 安装 我们使用docker来安装Gitlab xff0c
  • windows 文件夹正在使用 “操作无法完成,因为其中的文件夹或文件已在另一程序中打开“ 解决办法

    解决办法 xff1a 右键状态栏 gt 任务管理器 gt 性能 gt 打开资源监视器 gt CPU gt 在 关联的句柄 处搜索被占用的文件夹名称 现象 解决办法 第1步 第2步 第3步 例如搜索 test 第4步 右键找到占用的程序 第5
  • Windows服务器更新服务的配置-client

    0x01 WSUS客户端 wsus客户端可以使windows的各种系统 windows7 8 10 server 无须安装任何软件 0x02 客户端配置 wsus客户端通过配置本地组策略来实现 运行中输入 xff1a gpedit msc
  • Anime4K:目前最热的开源实时动漫放大算法,Github上一周收获2600星!

    点击我爱计算机视觉标星 xff0c 更快获取CVML新技术 今天跟大家介绍一款动漫画面放大算法Anime4K xff0c 目前最热的开源 实时 视频动漫放大算法 https github com bloc97 Anime4K 一周内该库在G
  • 统计学:离散型和连续型随机变量的概率分布

    主要随机变量一览表 随机变量概率分布均值方差一般离散型变量 p x 的 表 公 式 或 者 图 x x p x x x 2 p x 二项分布 p x 61 C x n p x
  • Stata基本功能及其函数实现

    Stata简介 xff1a Stata使用简单 xff0c 功能强大 xff0c 是数据分析中常用的统计计量软件 本人使用的是Stata14 xff0c 如若需要 xff0c 可评论留言 xff01 1 Stata基本描述 1 1主窗口 如
  • MySQL安装过程问题:服务器名无效,发生系统错误 5 拒绝访问

    1 服务器名无效 安装好MySQL之后 xff0c 使用CMD系统命令程序 xff0c 输入命令启动MySQL xff0c 提示 服务器名无效 原因1 xff1a 服务器名字错误 解决方法 检查命令行中服务器名是否正确 xff0c MySQ
  • R语言基础画图/绘图/作图

    R语言基础画图 R语言免费且开源 xff0c 其强大和自由的画图功能 xff0c 深受广大学生和可视化工作人员喜爱 xff0c 这篇文章对如何使用R语言作基本的图形 xff0c 如直方图 xff0c 点图 xff0c 饼状图以及箱线图进行简