R语言做图

目录

1. 图形参数

2. 低级图形

3. 部分高级图形 

参考 


1. 图形参数

        图形参数用于设置图形中各种属性。

        有些参数直接用在绘图函数内,如plot函数可以用 pch(点样式)、col(颜色)、cex(文字符号大小倍数)、lty(线条样式)、 lwd(线条宽度)等参数。

         有些图形参数必须使用par()函数指定。 par函数指定图形参数并返回原来的参数值, 所以在修改参数值作图后通常应该恢复原始参数值。

通过

opar <- par(mfrow=c(2,2))
...
par(opar)

opar <- par(mfrow=c(2,2))
on.exit(par(opar))

 设置参数并在操执行完后回复par原始参数

        R通过配置参数达到想要的效果,参数有很多,为了避免滥用或浪费。比如数如颜色大小是可以通用的,被分到了par里面,作为公共参数集合。如果plot的坐标轴要用颜色相关的属性,那么就可以去par中取来用。所以par可理解为公共参数列表。 【1】

详细参数参考

26 基本R绘图 | R语言教程 (pku.edu.cn)

2. 低级图形

        低级绘图函数是在现有的图形上添加元素。

2.1 在图上直线

        在R语言中,abline()函数用于在图形中添加一条直线。它可以添加水平线、垂直线或者通过指定截距和斜率来添加任意直线。

主要参数包括:

h: 添加一条水平线,参数值为水平线的y坐标。

v: 添加一条垂直线,参数值为垂直线的x坐标。

a、b: y=bx+a   (此外a,b还有其它表示斜线方法)

2.2 在图上标散点

# 在sin曲线上标出x为1,2,3三个点
special <- list(x=c(1,,2,3), y=sin(c(1,2,3)))
plot(seq(0,2*pi,length=100), sin(seq(0,2*pi,length=100)), type='l')
# 分别列出x,y坐标
points(special$x, special$y, col="red", pch=16, cex=2)# 第一个参数还可以是x、y组成的列表list
points(special, col="red", pch=16, cex=2)

2.3 图上增加曲线

lines(x, fx, lwd=, col=)

参数需要(x,fx)坐标

2.4 加图例

 legend(x, y, col=c("red", "blue"),  lty=c(1,1), lwd=c(2,2),  legend=c("f1_name", "f2_name"))

(x,y)为图例左上角坐标(即图例放在图的哪里)

2.5 自定义坐标轴

  •  在plot()函数中用 axes=FALSE可以取消自动的坐标轴。
  • 用box()函数画坐标边框。
  • 用axis函数单独绘制坐标轴。
  • axis的第一个参数取1,2,3,4, 分别表示axis所设置的是横轴、纵轴、上方和右方的坐标轴。
  • axis的参数at为 刻度线位置,labels为标签。
axis(1, at=seq(x), labels=names(x))

2.6 图中添加文字 

在图中(x,y)处添加文字‘线性回归’,左对齐

adj=0:这是调整文本位置的参数。

adj=0 表示文本左对齐,adj=1 则表示右对齐,adj=0.5 表示居中对齐。

text(x, y, adj=0, '线性回归:')

3. 部分高级图形 

3.1 条形图

> dframe <-read.csv("D:/demoData/StaBr/example/chap01/example1_1.csv",fileEncoding = "GBK")
> dtable<-table(dframe$性别)
> head(dframe)社区 性别 态度
1 A社区   男 反对
2 B社区   女 反对
3 D社区   女 反对
4 C社区   男 反对
5 A社区   男 赞成
6 D社区   女 反对
> # 条形图
> # xlim x轴范围、width条形宽度 legend显示图例
> barplot(dtable,main="性别分布",
+         col=c("pink",'lightblue'),
+         xlim=c(-2,5),width =0.5)
> # 构造列联表法一with(data, expr, …)函数用于在一个从data构建出的环境中运行R表达式
> dtable2<-with(dframe,table(性别,态度))
> # 构造列联表法二
> dtable2_<-table(dframe$性别,dframe$态度)
> dtable2==dtable2_ #两方法结果一样态度
性别 反对 赞成男 TRUE TRUE女 TRUE TRUE
> # 列联表分段条形图
> barplot(dtable2,legend=TRUE,
+         xlim=c(-2,5),width =1,
+         col=c("pink",'lightblue'),
+         main="不同性别人态度")
> # 列联表并排条形图 beside
> barplot(dtable2,, beside=TRUE,
+         legend=TRUE,xlim=c(0,6),
+         width =0.5,col=c("pink",'lightblue'),
+         main="不同性别人态度")
> 

3.2 直方图和和密度图 

        直方图是数是一个连续变量的概率分布的估计,是一种条形图。 构建直方图包括分间隔(间隔必须相邻)、计算该间隔数据量。纵轴可以有频数和概率两种形式。

        核密度估计是一种非参数估计,通过样本估计未知随机变量的概率分布。把每个设置的x轴序列点根据每个样本作用核函数(概率密度函数)并求平均得到该点估计概率密度,最终得到该样本的估计的概率分布。【2】

> dframe <-read.csv("D:/demoData/StaBr/example/chap01/example1_2.csv",fileEncoding = "GBK")
> head(dframe)销售额
1    272
2    181
3    225
4    199
5    188
6    240
> d<-dframe$销售额
> # 频数直方图
> hist(d,col=rainbow(8),main="销售额分布",xlab='x',ylab='频数',ylim=c(0,30))
> # 频率直方图
> hist(d,freq = FALSE ,col=rainbow(8),main="销售额分布",xlab='x',ylab='频率',ylim=c(0,0.026))
> # 用核密度图估计概率分布
> # R 内置核函数 density() 
> lines(density(d),col="red",lwd=1)

3.3 箱型线

        直观看到异常点、最大最小值、中位数和上下四分位数(0.25、0.75)的位置 。

> dframe <-read.csv("D:/demoData/StaBr/example/chap02/example2_2.csv",fileEncoding = "GBK")
> head(dframe)日期 北京 上海 郑州 武汉 西安 沈阳
1 2019/1/1   45   40  158   62  215  114
2 2019/1/2   78   87  200   80  271  103
3 2019/1/3  162   73  204   95  340  103
4 2019/1/4   40   75  325  122  296   63
5 2019/1/5   47   64  142  214  258   51
6 2019/1/6   88   55  119  213  346  110
> boxplot(dframe$郑州)
> with(dframe,boxplot(list('沈阳'=沈阳,'北京'=北京)))

with(d.cancer, boxplot(v0 ~ sex)) #【3】

3.4 正态qq图 

        正态QQ图, 当变量样本来自正态分布总体时, 正态QQ图的散点近似一条直线。

> # 生成符合正态分布的值
> y<-rnorm(100)
> # 做正态qq散点图
> qqnorm(y)
> # 上下两个四分位点的连线
> qqline(y,col='red',lwd=2)

 代码实现qq图,比较是否服从正态【4】

# 真实分布下z值1~250
a <- seq(1, 250, 1)
# 得出某值的累积百分比
t <- (rank(a) -0.5)/length(a)
# 依据标准正态根据真实分布下数据累积百分比生成预期的正态分布的z值
q <- qnorm(t, mean=0,sd=1)
# x轴为用来比较的预期分布q,y轴则为真实数据a的分布情况
plot(q, a)
abline(mean(a), sd(a), col=2, lwd=2)

有关标准线斜率截距的得出【5】:

3.5 散点图

dframe <-read.csv("D:/demoData/StaBr/example/chap01/table1_n.csv",fileEncoding = "GBK")
head(dframe)
with(dframe,plot(金融, 会计,pch=16, col='blue',cex=2))

        利用大小cex可视化数据,增加表达维度:将第三维数据归一化

        利用ifelse和颜色col增加表达维度:条件sex=='M'为真,执行返回’blue‘,否则返回’red‘。

        通过pairs()函数,生成多个变量间,两两变量间散点图矩阵

3.6 曲线图

        使用 curve(f(x),x_left,x_right) plot(type='l')做曲线图。

> # 做法1,第一个参数要以x为自变量
> curve(dnorm(x),-2,2,main='plot_l')
> # 做法2
> plot(seq(-2,2,0.1),dnorm(seq(-2,2,0.1)),type='l',main='plot_l')

        绘制多条曲线 

> x<-seq(-2*pi,2*pi,length=1000)
> y1<-sin(x)
> y2<-cos(x)
# Lty指定实线,lwd表示线宽,xlim表示作图x轴范围
> matplot(x,cbind(y1,y2),lty=1,lwd=2,col=c('red','blue'),xlab='x_value',ylab='',xlim=c(-(1/2)*pi,(1/2)*pi),type='l')
# 在图中做直线,h是水平线、v则表示竖线
> abline(h=0,v=0,col='gray')

参考 

 【1】[3]R语言在数据处理上的禀赋——par参数详解(一) - 编程狗的博客 - 博客园 (cnblogs.com)

【2】核密度图(kernel density plot)原理详解和代码实现 - 知乎 (zhihu.com)

【3】26 基本R绘图 | R语言教程 (pku.edu.cn)

【4】正态性检验之qqplot和ppplot原理及R语言实现 - 简书 (jianshu.com)

【5】26 基本R绘图 | R语言教程 (pku.edu.cn)

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

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

相关文章

pdf怎么压缩到2m以内或5m以内的方法

PDF作为一种广泛使用的文档格式&#xff0c;已经成为我们工作和生活中不可或缺的一部分。然而&#xff0c;有时候PDF文件内存会比较大&#xff0c;给我们的存储和传输带来了很大的不便。因此&#xff0c;学会压缩 PDF 文件是非常必要的。 打开"轻云处理pdf官网"&…

48-1 内网渗透 - 内核漏洞提权

权限提升 提权是指将普通用户的权限进行提升,也叫特权提升。在渗透测试中,通过利用各种漏洞提升webshell权限以夺得服务器权限。 系统内核漏洞提权 当目标系统存在已知的内核漏洞且没有更新安全补丁时,攻击者可以利用这些漏洞进行提权,从而获得系统级别的访问权限。 ###…

【记录45】【案例】echarts 柱状图3D效果

环境 echarts4.1.0 <template> <!-- 商场各楼层统计 --><div id"threethree"></div> </template><script> import * as echarts from "echarts" export default {name:"",components:{},data(){return {…

Python基础用法 之 运算符

1.算数运算符 符号作用说明举例加与“”相同 - 减与“-”相同*乘 与“ ”相同 9*218/除 与“ ”相同 9/24.5 、6/32.0//求商&#xff08;整数部分&#xff09; 两个数据做除法的 商 9//24%取余&#xff08;余数部分&#xff09; 是两个数据做除法的 余数 9%21**幂、次方2**…

vue3-父子通信

一个简单的vue3子组件调用父组件方法的demo <template> <div> <h2>Parent Component父组件</h2> <ChildComponent notify-parent"handleParentMethod" /> </div> </template> <script> import { ref } fr…

三星S20以上手机中的动态相片及其分解

三星S20以后的相机&#xff0c;相机拍出来的图片&#xff0c;用三星手机自带的“相册”打开之后&#xff0c;还会有“查看动态照片”的选项&#xff0c;点击之后就能查看拍照片时前后2秒左右的视频&#xff01; 不知道这个功能是不是三星独有的。 这样得到的图片非常大。因为…

用python实现多文件多文本替换功能

用python实现多文件多文本替换功能 今天修改单位项目代码时由于改变了一个数据结构名称&#xff0c;结果有几十个文件都要修改&#xff0c;一个个改实在太麻烦&#xff0c;又没有搜到比较靠谱的工具软件&#xff0c;于是干脆用python手撸了一个小工具&#xff0c;发现python在…

RabbitMQ 相关概念

引言 什么是消息中间件 消息是指在应用间传送的数据&#xff0c;包含文本字符串、JSON等。消息队列中间件&#xff08;MQ&#xff09;指利用高效可靠的消息传递机制进行平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型…

基于STM32和人工智能的智能四轴飞行器系统

目录 引言环境准备智能四轴飞行器系统基础代码实现&#xff1a;实现智能四轴飞行器系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景&#xff1a;智能飞行器管理与优化问题解决方案与优化收尾与总结 1. 引言 随着无人机技术的发展&…

8.华为两台交换机的三种连接方式access 、trunk、undo portswitch

目的&#xff1a;两台三层交换机的三种连接方式 1.access 2.trunk 3.undo portswitch 模拟机不支持此配置&#xff0c;实体机支持 第一种access CE1配置 [~HUAWEI]vlan batch 10 [~HUAWEI]int Vlanif 10 [~HUAWEI-Vlanif10]ip add 10.10.10.1 24 [~HUAWEI]int g1/0/0 [~HUAWE…

Go语言RPC开发深度指南:net/rpc包的实战技巧和优化策略

Go语言RPC开发深度指南&#xff1a;net/rpc包的实战技巧和优化策略 概览理解net/rpc的核心概念RPC的基本原理net/rpc的工作模式关键特性 快速开始准备RPC服务和客户端的基础环境构建一个基础的RPC服务端构建一个基础的RPC客户端 开发一个实际的RPC服务设计服务接口实现服务客户…

男士内裤哪个品牌质量好?国内质量好的男士内裤推荐

今天想和大家分享一个虽不起眼但至关重要的时尚单品——男士内裤。它可能不像外套或鞋子那样引人注目&#xff0c;但却承载着男士们日常的舒适与健康。选择一款合适的男士内裤&#xff0c;不仅能提升穿着体验&#xff0c;更是展现个人品味和生活态度的关键。以下是一些选择内裤…

JS读取目录下的所有图片/require动态加载图片/文字高亮

<template class"aa"><div class"demo-image__lazy container"><div class"head"><div class"left-bar"><div><span>综合</span></div><div><span>定位</span><…

睡眠脑电 | 多导睡眠图技术

摘要 多导睡眠图(PSG)一词由Holland等人于1974年提出&#xff0c;用于描述在睡眠期间同时记录、分析和解释多个生理特征。PSG是诊断睡眠障碍患者和增进我们对正常睡眠认识的重要工具。这是一个复杂的过程&#xff0c;应由训练有素的技术人员执行。本文回顾了多导睡眠图(PSG)的…

享元和代理模式

文章目录 享元模式1.引出享元模式1.展示网站项目需求2.传统方案解决3.问题分析 2.享元模式1.基本介绍2.原理类图3.外部状态和内部状态4.类图5.代码实现1.AbsWebSite.java 抽象的网站2.ConcreteWebSite.java 具体的网站&#xff0c;type属性是内部状态3.WebSiteFactory.java 网站…

JavaScript和promise——0_1 promise

文章目录 是什么&#xff1f;未来值回调和未来值在回调环境下这么和未来值交互&#xff1f;群居的未来值其他的解决方案 这样写可以实现目标效果。可是&#xff0c;这样写优雅吗&#xff1f; 英雄登场关键词&#xff1a;then关键词&#xff1a;回调 为什么promise不需要start函…

vue修改node_modules打补丁步骤和注意事项_node_modules 打补丁

1、vue-pdf问题解决及patch-package简介&#xff1a;https://www.jianshu.com/p/d1887e02f8d6 2、使用“黑魔法”优雅的修改第三方依赖包&#xff1a;https://zhuanlan.zhihu.com/p/412753695 3、使用patch-package定制node_modules中的依赖包&#xff1a;https://blog.csdn.…

自动驾驶仿真:Carsim转向传动比设置

文章目录 一、转向传动比概念二、设置转向传动比1、C factor概念2、Steer Kinematics概念3、传动比计算公式 三、转向传动比验证 一、转向传动比概念 转向传动比&#xff08;Steering Ratio&#xff09;表示方向盘转动角度与车轮转动角度之间的关系。公式如下&#xff1a; 转向…

电脑怎么录音?分享2种音频录制方法

在日常生活和工作中&#xff0c;我们经常需要录制电脑上的音频&#xff0c;无论是为了记录会议内容、保存网络课程&#xff0c;还是为了制作自己的音频素材&#xff0c;录音功能都显得尤为重要。那么电脑怎么录音&#xff1f;本文将详细介绍2种方法教你如何在电脑上进行录音&am…

Ajax的应用

1. Ajax Ajax是Asynchronous Javascript And XML&#xff08;异步JavaScript和XML&#xff09;的缩写。 Ajax技术描述了使用脚本操纵HTTP和Web服务器进行数据交换&#xff0c;在页面不刷新的情况下&#xff0c;实现页面的局部更新。 重点&#xff1a; Ajax 是一种在无需重新加…