首页 > 其他分享 >R绘图基础—图形初阶

R绘图基础—图形初阶

时间:2023-04-16 22:55:39浏览次数:39  
标签:par 初阶 mtcars 坐标轴 wt 绘图 图形 col

《R语言实战》第3章—— 图形初阶
#3 图形初阶 ####
#屏幕显示图形
attach(mtcars) #将数据框添加到R的搜索路径中
plot(wt,mpg) #默认散点图
abline(lm(mpg~wt)) #最优拟合曲线
detach(mtcars) #将数据框从搜索路径中移除

#保存图形####
setwd('D:/personal_file/R') #设置工作目录
sink('myput',append = T,split=T) #重定向文本输出
jpeg('mtcars.jpg') #重定向图形输出
attach(mtcars) #绑定数据框
plot(wt,mpg)
abline(lm(mpg~wt)) #最优拟合曲线
title('grath')
detach(mtcars) #取消数据框绑定
dev.off()

##创建多个窗口####
#每个窗口显示一个图型
x11()
dose<-c(20,30,40,50)
drageA<-c(16,20,27,40)
plot(dose,drageA,type='b')
x11()
dose<-c(20,30,40,50)
drageB<-c(15,18,31,40)
plot(dose,drageB,type='b')

#3.1图形参数####
#有两种方式控制
#方式1:高级绘图函数直接提供optionname=value的键值对
#这种情况下只对这幅图本身有效,比如使用plot
dose<-c(20,30,40,50)
drageA<-c(16,20,27,40)
plot(dose,drageA,
type='b', #表示同时绘制点和线
lty=2, #指定线条类型
lwd=2, #线条宽度
pch=23, #指定绘制点的符号
col='blue', #线条颜色,指定边框颜色
bg='red', #填充色
col.axis='#006405', #坐标轴刻度颜色
col.lab='#006400') #坐标轴名称颜色

#方式2:通过函数par()来指定这些选项,作用全局
dose<-c(20,30,40,50)
drageA<-c(16,20,27,40)
opar<-par(no.readonly=T) #保存当前图形参数设置。#no.readonly=T是可修改的当前图形参数列表
par(lty=2,pch=23,col='red') #修改默认图形参数
plot(dose,drageA,type='b')
par(opar) #还原初始图形参数设置

#例子:使用图形参数控制多个图形外观
dose<-c(20,30,40,50)
drageA<-c(16,20,27,40)
drageB<-c(15,18,31,40)
opar<-par(no.readonly=T)
par(pin=c(2,3))
par(lwd=2,cex=1.5)
par(cex.axis=.75,font.axis=3)
par(mfcol=c(1,2)) #界面分割成1*2个图形区域即是1行2列(按列填充)
plot(dose,drageA,type='b',
main='a',sub='my grath',#标题、副标题
pch=22,lty=2,col='red',
xlab='dosage',ylab='drug response', #坐标轴标签
xlim=c(10,60),ylim=c(10,50) #x、y坐标轴范围
)
plot(dose,drageB,main='b',type='b',pch=24,lty=6,
col='blue',bg='green',
xlab='dosage',ylab='drug response',
xlim=c(10,60),ylim=c(10,50))
par(opar)


#3.2常用图形设置函数####
par(pin=c(4,3),mai=c(1,0.5,1,0.2)) #图形尺寸与边界尺寸
title(main=,sub,xlab=,ylab=) #图形添加标题和坐标轴标签
axis(side=,at=,labels=) #自定义坐标轴,需禁用高级绘图函数自动生成的坐标轴
abline(h=,v=) #参考线
legend(location=,title=,legend=) #图例
text(wt,mpg,row.names(mtcars)) #添加数据标签


#3.2.1通过标题函数设置参数
#title用于默认标题和坐标轴标签被ann=FALSE选项移除的图形中
dose<-c(20,30,40,50)
drageA<-c(16,20,27,40)
plot(dose,drageA,type='b')
title(main='a',col.main='red', #标题、标题颜色
sub='my grath',col.sub='blue', #副标题、副标题颜色
xlab='x',ylab='y', #x、y轴
clo.lab='green',cex.lab=0.75)

#3.2.2自定义坐标轴####
#axis()创建自定义坐标轴时应禁用高级绘图函数自动生成的坐标轴

#例1
x<-c(1:10)
y<-x
#y2<-x+1
z<-10/x
opar<-par(no.readonly=T)
par(mar=c(5,4,4,8)+0.1)
plot(x,y,type='b',
pch=21,col='red',lty=5,bg='green',
yaxt='n',ann=F #禁用Y轴(去除刻度留下框架线)
)
lines(x,z,type='b',pch=22,col='blue',lty=2,bg='green')
#lines(x,y2,type='b',pch=22,col='orange',bg='green',lty=2)
axis(2,at=x,labels=x,col.axis='red',las=2) #添加自定义坐标轴
axis(4,at=z,labels=round(z,digits = 2),
col.axis='blue',las=2,
cex.axis=0.75,tck=-0.01)
mtext('y=10/x',side=4,line=3,las=2,col='blue') #在图形边界添加文本
abline(h=c(2,4,6,8)) #添加水平参考线
abline(v=seq(1,10,2),lty=2,col='blue') #添加垂直参考线
minor.tick(nx=3,ny=3,tick.ratio = 0.5) #添加次要刻度线
title(main='my data',xlab='x',ylab='y=x')
par(opar)

#例2
dose<-c(20,30,40,50)
drageA<-c(16,20,27,40)
drageB<-c(15,18,31,40)
opar<-par(no.readonly=T)
par(lwd=2,cex=1,font.lab=2)
plot(dose,drageA,type='b',
main='drug a vs b',
pch=15,lty=1,col='purple',
xlab='dosage',ylab='drug response',
ylim=c(0,60))
lines(dose,drageB,type='b',pch=17,lty=2,col='plum')
abline(h=c(30),lwd=1.5,lty=2,col='gray')
minor.tick(nx=3,ny=3,tick.ratio = 0.5) #添加次要刻度线
legend('topright',inset=0.02,legend=c('A','B'), #添加图例
lty=c(1,2),pch=c(15,17),col=c('purple','plum'))
par(opar)


#3.2.3添加图形标签####
attach(mtcars)
plot(wt,mpg,main='my data',
xlab='weight',ylab='mileage',
pch=18,col='blue')
text(wt,mpg,
row.names(mtcars), #数据标签名称,无此项显示数值
cex=0.6,pos=4,col='black')
detach(mtcars)

#3.3颜色####
#可以控制图形、坐标轴、标题等颜色
#创建多阶连续彩虹型颜色
n<-10
mycolors<-rainbow(n)
pie(rep(1:n),labels=mycolors,col=mycolors)
#创建多阶连续灰度色
n<-10
mygrays<-gray(0:n/n)
pie(rep(1:n),labels=mygrays,col=mygrays)
par(pin=c(4,3),mai=c(1,.5,1,.2))

#使用brewer.pal(n,name)创建有颜色值的向量
n<-7
mycolors<-brewer.pal(n,'Set1')
barplot(rep(1,n),col=mycolors)


#3.4创建多幅图的组合图####
#3.4.1使用par()
#par(mfrow=c(nrows,ncols))表示按行填充
#par(mfcol=c(nrows,ncols))表示按列填充

attach(mtcars)
opar<-par(no.readonly = TRUE)
par(mfrow=c(2,2)) #2行2列排4幅图
plot(wt,mpg,main='A')
plot(wt,disp,main='B')
hist(wt,main='C')
boxplot(wt,main='D')
par(opar)
detach(mtcars)

#3.4.2使用layout()
attach(mtcars)
layout(matrix(c(1,1,2,3),2,2,byrow=T)
#,widths=c(3,1),heights=c(1,2)
) #一幅图被置于第一行,另两幅图被置于第二行
hist(wt,col='red')
hist(mpg,col='blue')
hist(disp,col='green')
detach(mtcars)

#3.5图形布局精确控制fig####
opar<-par(no.readonly = TRUE)
par(fig=c(0,0.8,0,0.8)) #设定散点图绘图区域
attach(mtcars)
plot(wt,mpg,xlab = "miles per callon",ylab = "Car Weight")
#fig=默认新建一幅图形,在添加一幅图到一幅现有图形上时,
#请设定参数new=TRUE
par(fig=c(0,0.8,0.55,1),new=TRUE)
boxplot(wt,horizontal = TRUE,axes=FALSE)
par(fig=c(0.65,1,0,0.8),new=TRUE)
boxplot(mpg,axes=FALSE)
detach(mtcars)

标签:par,初阶,mtcars,坐标轴,wt,绘图,图形,col
From: https://www.cnblogs.com/lizixi/p/17324343.html

相关文章

  • APP爬虫初阶之Pixel2刷机root
    pixel2刷机刷机准备lineageziptwrpimgmagiskzip(github上下的是APK,需要把后缀改为zip)刷机步骤首先需要一个底包,这里我用的出厂自带的google官方系统,没有重新刷入手机上打开usb调试,关闭屏幕超时锁屏,打开OEM锁手机完全关机,按住向下键重启(或者通过adbrebootbootl......
  • 图形学(6)Ray Tracing:Photometry
    Photometry光能LuminousEnergy单位流明秒(\(lm\cdots\))\[\begin{align*}&Q\[lm\cdots]\end{align*}\]光通量LuminousFlux(power)单位流明(\(lm\))\[\Phi\equiv\frac{dQ}{dt}\[lm]\]光度IllumiousIntensity每单位立体角的光通量,单位坎德拉(\(cd\))\[I\equiv......
  • 到底什么样的图形交易才能赚钱呢?
    断头铡刀看图形,慢慢上涨,突然一根大阴线下来,就有下跌趋势了,后面止损可以放在大阴线的高点!【注】:一定要有止损,而且要顺应大趋势!小周期先于大周期启动,大周期稳定!......
  • G6.js初体验(图形可视化引擎)
    前言G6是支付宝前端团队推出的一款功能强大、易于使用的JavaScript图形库。在这篇博客中,我将介绍如何使用G6创建一个简单的流程图。初体验首先,我们需要准备好流程图数据。在这个例子中,我们使用JSON格式来表示流程图,并为每个节点定义了其id、名称、类型和位置信息。例如:constf......
  • 算法刷题-阶乘后的零(数学)、模拟计算器(算法初阶、基础知识)、解码方法(字符串、动态
    阶乘后的零(数学)给定一个整数n,返回n!结果中尾随零的数量。提示n!=n*(n-1)*(n-2)*...*3*2*1示例1:输入:n=3输出:0解释:3!=6,不含尾随0示例2:输入:n=5输出:1解释:5!=120,有一个尾随0示例3:输入:n=0输出:0提示:0<=n<=104**进阶:**你......
  • 【转】基于.net6+gtksharp实现的Linux下的图形界面串口调试工具
    【开源】基于.net6+gtksharp实现的Linux下的图形界面串口调试工具-狼性法则-博客园(cnblogs.com) 背景22年初从上家互联网公司离职以后,充分认识到互联网行业的风险,公司在没有自身稳定产品的情况下,互联网行业就是一个烧钱的行业,支出远远大于收入来源,上家公司就是如......
  • CAD绘图次序快捷键是什么?怎么用?
    在CAD绘图过程中,当图纸中某一图形被其他图形遮挡时,如果想要将其显示出来可以通过调整其绘图次序来实现。那么,你知道CAD绘图次序快捷键是什么吗?今天小编来给大家简单介绍一下浩辰CAD软件中CAD绘图次序快捷键是什么以及使用技巧,一起来看看吧!CAD绘图次序快捷键是什么?CAD绘图次序命......
  • 现代计算机图形学——P3. Transformation-2D
    P3.TransformationP3.Transformation 矩阵和变换联系起来 ReflectionMatrix(反射矩阵(名字不重要)):切变:旋转:推导:旋转矩阵中的B和D可以用(0,1)这个点来推算线性变换:(先不管这个M)齐次坐标为什么要用齐次坐标:......
  • CPU 进行图形显示的 逻辑,以及 gpu 与 display controler 的关系
    问题: 对上面这个问题一直不是很理解。截图如下:    ......
  • 解决matplotlib绘图时标签上中文无法正常显示的问题
    在使用matplotlib绘图过程中,有时我们会发现标签上中文无法正常显示出来,而是变成了一个个方框示例:解决方法:在图表代码行前加入一下代码plt.rcParams['font.sans-serif']='SimHei'解决后示例注意:需要把这行代码加入在使用matplotlib内置样式代码后,否则原有设置会被内置样......