R-plot

颜色、图例和线

在散点图中添加信息、图例以及回归线。

模拟数据

#模拟数据
dat <- data.frame(X = runif(100,-2,2),T1 = gl(n=4,k=25,labels = c("Small","Medium","Large","Big")),Site = rep(c("Site1","Site2"),time = 50))
mm <- model.matrix(~Site+X*T1,dat)
betas <- runif(9,-2,2)
dat$Y <- rnorm(100,mm%*%betas,1)
summary(dat)

添加颜色
给plot的col参数传递一个颜色向量

#选择需要使用的颜色
library(RColorBrewer)
#RColorBrewer中的所有调色板
display.brewer.all()
#选取Set1调色板中的四种颜色
cols <- brewer.pal(n=4,name="Set1")
#cols表示的是四种不同颜色的名称
#创建一个跟T1变量的因子水平相对应的颜色向量
cols_t1 <- cols[dat$T1]

plot(Y~X,dat,col=cols_t1,pch=16)

更改图形符号
创建图形符号向量,用来标记两种不同的Site

pch_site <- c(16,18)[factor(dat$Site)]
#pch参数用来控制图形符号
plot(Y~X,dat,col=cols_t1,pch=pch_site)

添加图例

legend函数的第一个参数指定图例显示在图形中位置,接着是图例文本。通过设置xpd=TRUE可以在图形外增加图例。并指定x,y坐标轴

plot(Y~X,dat,col=cols_t1,pch=pch_site)
legend("topright",legend = paste(rep(c("Small","Medium","Large","Big"),times=2),rep(c("Site 1","Site 2"),each=4),sep = ", "),col = rep(cols,times=2),pch = rep(c(16,18),each=4),bty = "n",ncol = 2,cex = 0.7,pt.cex = 0.7,xpd = TRUE)

添加回归线

new_X<-expand.grid(X=seq(-2,2,length=10),T1=c("Small","Medium","Large","Big"),Site=c("Site1","Site2"))
m<-lm(Y~Site+X*T1,dat)
pred<-predict(m,new_X)
xs<-seq(-2,2,length=10)
plot(Y~X,dat,col=cols_t1,pch=pch_site)
lines(xs,pred[1:10],col=cols[1],lty=1,lwd=3)
...
lines(xs,pred[31:40],col=cols[4],lty=1,lwd=3)
lines(xs,pred[41:50],col=cols[1],lty=2,lwd=3)
...
lines(xs,pred[71:80],col=cols[4],lty=2,lwd=3)
legend(x=-1,y=13,legend=paste(rep(c("Small","Medium","Large","Big"),times=2),rep(c("Site 1","Site 2"),each=4),sep=", "),col=rep(cols,times=2),pch=rep(c(16,18),each=4),lwd=1,lty=rep(c(1,2),each=4),bty="n",ncol=2,cex=0.7,pt.cex=0.7,xpd=TRUE)

坐标轴

坐标轴标题和标签
新建绘图数据并得到默认设置的图形:

#新建数据
x<-1:100
y<-runif(100,-2,2)
#得到的默认设置的图形
plot(x,y)
#修改坐标轴标题
plot(x,y,xlab="Index",ylab="Uniform draws")

图形设置通过par函数来实现

#修改轴标签和轴标题的尺寸
op<-par(no.readonly=TRUE) #保存默认设置
par(cex.lab=1.5,cex.axis=1.3)
plot(x,y,xlab="Index",ylab="Uniform draws")
#为了得到大尺寸的轴标题和标签,需要预留更大的空间
par(mar=c(6,6,3,3),cex.axis=1.5,cex.lab=2)
plot(x,y,xlab="Index",ylab="Uniform draws")

通过axis函数可以对坐标轴做更多设置。他可以用来控制在哪些坐标值处绘制刻度线,刻度线下放置轴标签,轴线的类型和宽度,刻度线宽度,轴线和刻度线的颜色:

#利用axis函数对坐标轴作进一步的设置
par(op) #重置为默认设置
plot(x,y,xaxt="n") #不绘制x轴标签
axis(side=1,at=c(5,50,100)) #在x轴的5,50,150处绘制刻度线
#在刻度线处指定标签
plot(x,y,yaxt="n")
axis(side=2,at=c(-2,0,2),labels=c("Small","Medium","Big"))
#设置坐标轴线和标签
plot(x,y)
axis(side=3,at=c(5,25,75),lwd=4,lwd.ticks=2,col.ticks="red")
#移除图形四周的边框,只显示坐标轴线
plot(x,y,bty="n",xaxt="n",yaxt="n")
axis(side=1,at=seq(0,100,20),lwd=3)
axis(side=2,at=seq(-2,2,2),lwd=3)

R图形有四个面,底部是起始位置,并按顺时针方向计数(即side=3是在顶部)

刻度线
精细化的控制刻度线,它可以通过par函数或axis函数来实现。


Copyright © 吴华锦
雅致寓于高阁渔舟唱晚,古典悠然
格调外发园林绿树萦绕,馥郁清香

时间: 2024-08-28 10:40:48

R-plot的相关文章

R: plot 绘图各种参数,以及 legend。。

################################################### 问题:基础绘图plot   18.4.30 plot函数,基础绘图的各个参数? 解决方案: cars <- c(1, 3, 6, 4, 9); trucks <- c(2, 5, 4, 5, 12); suvs <- c(4,4,6,6,16) g_range <- range(0, cars)  #range()产生一个范围,本例即0-16 plot(cars, main =

Matlab绘图基本控制命令

图形的控制与表现 (Figure control and representation) MATLAB提供的用于图形控制的函数和命令:   axis:  人工选择坐标轴尺寸.    clf:清图形窗口. ginput: 利用鼠标的十字准线输入.   hold: 保持图形.    shg:显示图形窗口.subplot: 将图形窗口分成N块子窗口.1.图形窗口(figure window)(1). 图形窗口的创建和选择(Creating and selecting of figure window)

初步学习之FCM

先贴代码: data = rand(100,2); [center,U,obj_fcn] = fcm(data,2); plot(data(:,1), data(:,2),'o'); hold on; maxU = max(U); % Find the data points with highest grade of membership in cluster 1 index1 = find(U(1,:) == maxU); % Find the data points with highes

matlab有用小工具

http://blog.sina.com.cn/s/blog_59cf672601015qmm.html 目录: 1.使图形窗口的默认text解释器为latex 2.图形窗口最大化 3.双坐标 4.计时 5.局部放大子图 6.Figure缩放字体 7.legend的Marker,line的属性操作(多legend,曲线减少marker数) 8.eps图片在latex中显示不全 9.坐标轴被遮住.保存后消失 10.使用一个目录下的全部或某类文件 11. [原创]eps图片中使用隐含信息做标注 12

PCA 原理

PCA的数学原理(转) 1 年前 PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维.网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理.这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么. 当然我并不打算把文章写成纯数学文章,而是希望用直观和易懂的方式叙述PCA的数学原理,所以整个文章

推荐一个计算机视觉图书:python计算机视觉编程

编辑部的主页:好像没啥用 http://shop.oreilly.com/product/0636920022923.do 每章的代码,github上面的:中文版 https://github.com/willard-yuan/pcv-book-code github上面,英文版: https://github.com/jesolem/PCV 项目主页: http://programmingcomputervision.com 中文在线的书: http://www.ituring.com.cn/

ECG信号读取,检测QRS,P,T 波(基于小波去噪与检测),基于BP神经网络的身份识别

这学期选了神经网络的课程,最后作业是处理ECG信号,并利用神经网络进行识别. 1  ECG介绍与读取ECG信号 1)ECG介绍  具体ECG背景应用就不介绍了,大家可以参考百度 谷歌.只是简单说下ECG的结构: 一个完整周期的ECG信号有 QRS P T 波组成,不同的人对应不用的波形,同一个人在不同的阶段波形也不同.我们需要根据各个波形的特点,提取出相应的特征,对不同的人进行身份识别. 2)ECG信号读取 首先需要到MIT-BIH数据库中下载ECG信号,具体的下载地址与程序读取内容介绍可以参考

[从头学数学] 第172节 直线与方程

剧情提要: [机器小伟]在[project师阿伟]的陪同下进入了结丹初期的修炼. 这次要修炼的目标是[直线与方程]. 正剧開始: 星历2016年04月11日 09:30:00, 银河系厄尔斯星球中华帝国江南行省. [project师阿伟]正在和[机器小伟]一起研究[直线与方程]. 開始今天的修炼之前,小伟先整理了一下这件法器: <span style="font-size:18px;"> if (1) { var r = 20; config.setSector(1,1,1

Python socket编程之六:多窗口的应用

import struct import sqlalchemy import pandas import matplotlib.pyplot as Plot from matplotlib.finance import candlestick_ohlc as Drawk Engine = sqlalchemy.create_engine('mssql+pyodbc://sa:[email protected]') Dataframe = pandas.read_sql('sh', Engine)

[从头学数学] 第152节 旋转

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了筑基后期的修炼, 这次要修炼的目标是[旋转]. 正剧开始: 星历2016年03月26日 16:11:34, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一起研究[旋转]. <span style="font-size:18px;">//旋转 var r = 20; var r0 = 5*r; config.setSector(1,1,1,1); config.graphPaper2D(0, 0,