R语言基础绘图系统

基础绘图包之低级绘图函数——定义坐标轴、图例、文本

低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素。

函数 功能
arrows 添加箭头
axis 坐标轴
box 图形边框
abline 添加直线
clip 修剪图形
locator 识别图中点的坐标
layout 切分画布
legend 添加图例
lines 添加线条
segments 添加线段
rug 添加小地毯
polygon 构建多边形
points 添加散点
titles 添加标题
text 添加文字
mtext 在图形四周添加文字
grid 添加背景网格线

1.自定义坐标轴及文本

N <- 200
x <- seq(-4,4,length=N)
y1 <- sin(x)
y2 <- cos(x) op <- par(mar=c(5,4,4,4))
xlim <- range(x) #返回最大值和最小值
ylim <- c(-1.1,1.1)
plot(x,y1,col='blue',type='l',
xlim = xlim,ylim=ylim,
axes=F, #先不画坐标
xlab = '',ylab = '',main = 'title')
axis(1)
#axis中1,2,3,4分别表示下,左,上,右坐标
axis(2,col = 'blue') par(new=T) #在刚绘好的图上添加新图
plot(x,y2,col='red',type='l',
xlim=xlim,ylim=ylim,
axes = F,xlab = '',ylab = '',main = '')
axis(4,col = 'red')
#添加边缘文字
mtext('first Y axis',2,line = 2,col = 'blue',cex = 1.2)
#mtext第二个参数1,2,3,4也是表下左上右
mtext('second Y axis',4,line = 2,col = 'red',cex=1.2)



自定义不同的纵坐标。


plot(rnorm(100),axes = F,col='orange',pch=16,
ylab = 'scatter points',xlab = 'x axis',
ylim = c(-3.5,3.5))
#par函数中xaxt/yaxt设为n,表示不绘制坐标轴刻度和标签,但仍有一条坐标轴线
#这和axes稍有不同 axis(1,at=seq(0,100,10), #定义刻度线位置
labels = LETTERS[1:11],
col = 'red',lwd = 1.3, #坐标轴颜色
col.ticks = 'pink') #刻度颜色 axis(2,at=seq(-3,3,1),col = 'blue',
col.ticks = 'sky blue',lwd = 1.3)
#当自定义的坐标轴不能完全显示时(画布太小),可设置xlim/ylim解决 abline(h=0, #y轴为0的水平线
col='red',lwd=2,lty=2) curve(sin,
0,100, #from...to...
add = T) #添加到现有图形

2.图例


a=c(1:5)
b=c(2,3,3,4,5)
c=c(4,5,2,3,1) plot(b~a,type='b',bty='l',
xlab='value of a',ylab='value of b',
col='red',lwd=3,pch=17,ylim=c(1,5))
lines(c~a,col='blue',lwd=3,pch=19,type='b') legend(#'bottomleft', #位置参数:字符串 topright
3,5, #位置参数:坐标位置
legend=c('Group 1',"Group 2"), #图例标签
col = c('red','blue'), #图例填充色
pch=c(17,19), #图标形状
bty='n', #定义边框,n不要
pt.cex = 2, #图标大小
cex = 1.2, #标签文字大小
text.col = 'black', #标签文字颜色
horiz = F, #是否水平放置,默认F(垂直)
inset = c(0.1,0.1),#距离x、y轴程度,0-1
x.intersp = 0.1, #水平图标间距
y.intersp = 0.4) #竖直图标间距
#后两个参数对于图形中图例非常多时很有用

plot(iris$Sepal.Length~iris$Sepal.Width,
pch=c(21:23)[iris$Species],
#三种不同点型对应三个不同品种
col=c('orange','sky blue','pink')[iris$Species],
bg=c('orange','sky blue','pink')[iris$Species]) legend( #x=3.7,y=8.0, #坐标法
locator(1), #去图上找一个合适位置,左击鼠标
legend = c('Setosa','Versicolor','Virginica'),
col=c('orange','sky blue','pink'),
pch = 21:23,
pt.cex = 2,
y.intersp = 0.8, #图例间距
pt.bg = c('orange','sky blue','pink'))

3. 添加文本

x <- rnorm(1000)
hist(x,xlim = c(-4,4))
usr <- par('usr') #为找到画布四个角的坐标,左下角/右下角/左上角/右下角
clip(usr[1],-1,usr[3],usr[4])
#切割画布
hist(x,col = 'red',add=T)
text(-3,50,labels = 'red area',
col = 'red',srt=60,cex=2) #切割另一个矩形
clip(1,usr[2],usr[3],usr[4])
hist(x,col = 'blue',add=T)
text(x=3,y=50,labels = 'blue area',
col='blue',srt=300,cex=2)



示例2.

data <- sample(20:80,20)
par(mar=c(4,3,3,1))
barcenter <- barplot(data,col='skyblue',axes = F,
ylim = c(-5,100)) #限定y轴范围,为了使后面文本显示出来
#存储了条柱中心横坐标
axis(2,at=seq(0,100,10))
text(barcenter,-2,labels = LETTERS[1:20],
col = 'red',cex = 0.8)

示例3.

mycars <- data.frame(car=c('Honda','Benz','BMW',
'Audi','Chery','Toyota','Ford'),
mtg=c(4,5.2,5.5,2.8,1.8,2.8,3))
plot(mycars$mtg,cex=mycars$mtg,col='pink',pch=21,
bg='lightblue',ylab='cars\' mtg',xlab='cars',
xlim = c(0,7.5))
text(1:7,mycars$mtg,labels = mycars$car)

最新文章

  1. S3C2440的Linux启动过程分析(一)——SC2440处理器结构
  2. [XAF] How to hide individual navigation items and groups for certain users
  3. [问题2014S15] 复旦高等代数II(13级)每周一题(第十五教学周)
  4. 14、NFC技术:使用Android Beam技术传输文本
  5. Spring 中JCA CCI分析--转载
  6. iframe仿Ajax上传文件
  7. 如何在WCF中集成unity
  8. gdb调试 使用心得
  9. SSAS-时间维度的标准设计
  10. 基于visual Studio2013解决C语言竞赛题之0514单词统计
  11. selenium之多线程启动grid分布式测试框架封装(三)
  12. socket网络编程快速上手(二)——细节问题(3)
  13. JAVA_SE基础——72.自定义线程
  14. Python 描述符 data 和 non-data 两种类型
  15. python之读取配置文件模块configparser(二)参数详解
  16. PHP调用微信wx_JSSDK录音并播放,
  17. js立即执行函数用法
  18. win10下使用wget
  19. Leetcode 283.移动零 By Python
  20. WebMagic之爬虫监控

热门文章

  1. 在 Windows 10 上安装 Coq 库 Mathematical Components
  2. 阿里大神favoorr提供的书单
  3. [WPF] 在 Windows 11 中处理 WindowChrome 的圆角
  4. 数字孪生 3D 科技馆的科学传播新模式
  5. k8s入坑之路(10)kubernetes coredns详解
  6. 大白话讲解如何解决HttpServletRequest的请求参数只能读取一次的问题
  7. (数据科学学习手札130)利用geopandas快捷绘制在线地图
  8. 学习JS的第一天--初识JS
  9. [linux]centos7.4部署django+Uwsgi+Nginx
  10. MySQL 各版本连接驱动字符串