颜色、图例和线

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

模拟数据

#模拟数据
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 © 吴华锦
雅致寓于高阁渔舟唱晚,古典悠然
格调外发园林绿树萦绕,馥郁清香

R-plot的更多相关文章

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

    ################################################### 问题:基础绘图plot   18.4.30 plot函数,基础绘图的各个参数? 解决方案: ca ...

  2. R语言编程艺术(5)R语言编程进阶

    本文对应<R语言编程艺术> 第14章:性能提升:速度和内存: 第15章:R与其他语言的接口: 第16章:R语言并行计算 ================================== ...

  3. Python调用R编程——rpy2

    在Python调用R,最常见的方式是使用rpy2模块. 简介 模块 The package is made of several sub-packages or modules: rpy2.rinte ...

  4. R 语言实战-Part 5-2笔记

    R 语言实战(第二版) part 5-2 技能拓展 ----------第21章创建包-------------------------- #包是一套函数.文档和数据的合集,以一种标准的格式保存 #1 ...

  5. Python socket编程之八:阶段性总结

    f1.py # -*- coding: utf-8 -*- import sqlalchemy import tushare import pandas import socket import st ...

  6. IRIS数据集的分析-数据挖掘和python入门-零门槛

    所有内容都在python源码和注释里,可运行! ########################### #说明: # 撰写本文的原因是,笔者在研究博文“http://python.jobbole.co ...

  7. matlab工具箱之人眼检测+meanshift跟踪算法--人眼跟踪

    Viola-Jones 人眼检测算法+meanshift跟踪算法 这次的代码是对视频中的人眼部分进行检测加跟踪,检测用的是matlab自带的人眼检测工具箱 下面是matlab官网介绍这个算法的一些东西 ...

  8. Markdown入门基础

    // Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...

  9. Linear regression with multiple variables(多特征的线型回归)算法实例_梯度下降解法(Gradient DesentMulti)以及正规方程解法(Normal Equation)

    ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, , ...

  10. Python 实现粒子滤波

    #转# -*- coding=utf-8 -*-# 直接运行代码可以看到跟踪效果# 红色的小点代表粒子位置# 蓝色的大点表示跟踪的结果# 白色的方框表示要跟踪的目标# 看懂下面两个函数即可from n ...

随机推荐

  1. PHP MySQL Select 之Select

    从数据库表中选取数据 SELECT 语句用于从数据库中选取数据. 语法 SELECT column_name(s) FROM table_name 注释:SQL 语句对大小写不敏感.SELECT 与 ...

  2. SQL Server 日期函数:某天是星期几?

    [鹏城万里] 发表于 www.sqlstudy.com 要得到某一天是星期几,需要用到 SQL Server 中的日期函数:datename(). 今天是星期几,例子 1: set language ...

  3. What should we do when meet a crash in android?

    制造一个crash   为了演示的目的,我在libsensors的open_sensors_device中故意制造了一个crash:   static int open_sensors_device( ...

  4. easyui placeholder 解决方案

    最近,再用easyui的时候,发现easyui的input标签不支持h5的placeholder,为了实现这个效果,提供以下解决方案: 1.给input标签设置placeholder. <td& ...

  5. 六步实现Spring.NET 与 NHibernate 的整合

    最近刚完成一个项目,其中对数据库的架构用到的是Spring.NET 与 NHibernate相结合的产物.对于这两项技术,我自己也不是太熟悉,不过好在网上有很多关于这方面的介绍文档,在这里就不多说了. ...

  6. AsyncResult

    private static long CalculateFolderSize(string FolderName){ return FolderName.Length;} public delega ...

  7. ios 添加多个target 管理 多个版本文件

    1. 添加一个Target 这里是添加一个Test 项目 这里添加新的target Test与Release 也是同上的操作

  8. 【Remoting-4】

    [服务对象三种激活方式的不同] [1]客户端激活方式 [A]对象的创建,对象方法的执行都是在远程服务端. [B]服务端为每一个客户端创建其专属的对象,为这个客户提供服务,并且保存状态 [C]可以从远程 ...

  9. Windows环境搭建Red5流媒体服务器指南(转)

    Windows环境搭建Red5流媒体服务器指南 Windows环境搭建Red5流媒体服务器指南 测试环境:Windows 7 一.   下载安装程序 red5-server 下载地址 https:// ...

  10. toj4119HDFS

    In HDFS( Hadoop Distributed File System), each data may have a lot of copies in case of data lose. T ...