R语言作图:坐标轴设置

2023-11-18

R语言作图:坐标轴设置

2018-02-04 20:51:24 209654 收藏 359
分类专栏: R语言 可视化 文章标签: R 坐标轴 刻度 可视化
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
R语言 可视化 专栏收录该内容
6 篇文章 5 订阅

  要绘制一张赏心悦目的统计图表,坐标轴的设置至关重要。在R语言底层作图中,对坐标轴的调整主要通过调整plot函数、axis函数和title函数的一系列参数完成。

plot(x,y, ...)

axis(side,at = NULL, labels = TRUE, tick = TRUE, line = NA,

     pos= NA, outer = FALSE, font = NA, lty = "solid",

     lwd = 1, lwd.ticks = lwd, col = NULL,col.ticks = NULL,

     hadj = NA, padj = NA, ...)

title(main= NULL, sub = NULL, xlab = NULL, ylab = NULL,

      line = NA, outer = FALSE, ...)

一、plot函数的准备

  在个性化设置坐标轴之前中,通常需调整plot函数中的ann、bty、xaxt、yaxt、xaxs和yaxs参数:

  ann取FALSE时将不会画出标题(包括主、副标题及坐标轴标题);

  bty用来设置边框形式,默认值为"o",表示四面边框都画出,其余可选值包括"l"(左下)、"7"(上右)、"c"(上下左)、"u"(左下右)、"]" (上下右)和"n"(无,即不画边框),在很多个性化绘图中,bty设为"n",后期的边框线再使用其他函数(如axis)自行添加;

  xaxs和yaxs 用来设置x轴和y轴的范围,默认值取“r”,表示坐标轴比给定作图范围(参数xlim和ylim给出的范围)稍微大一点儿,取”i”时表示坐标轴范围与给定作图范围完全相同,另外还可取”s”、”e”、”d”;

  xaxt和yaxt 取”n”时,坐标轴、刻度线以及刻度值将不会画出。

 


     
     
  1. x <- seq ( - 4 , 4 , 0.01 )
  2. y <- x ^ 2
  3. par (mfrow = c ( 2 , 2 ) , mar = c ( 4 , 4 , 1 , 1 ) )
  4. plot (x , y ) # 未作处理
  5. plot (x , y , xaxs = "i" , yaxs = "i" ) # 绘图边框未留白
  6. plot (x , y , bty = 'l' ) # 只保留左和下两条边框
  7. plot (x , y , ann = F , bty = "n" , xaxt = "n" , yaxt = "n" ) # 边框、坐标轴都去掉

 

二、axis函数的用法

1、基本操作

  side表示要操作的坐标轴,取值1、2、3、4分别代表下、左、上、右;

  at表示刻度线及刻度值所在位置;

  labels表示刻度值;

  las表示坐标刻度值文字方向,las=0表示文字方向与坐标轴平行,1表示始终为水平方向,2表示与坐标轴垂直,3表示终为垂直方向。

 


     
     
  1. x <- seq ( - 4 , 4 , 0.01 )
  2. y <- x ^ 2
  3. par (mfrow = c ( 1 , 2 ) , mar = c ( 4 , 4 , 1 , 1 ) )
  4. #未设置文字方向
  5. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  6. axis ( 1 , - 4 : 4 , - 4 : 4 )
  7. axis ( 2 ,seq ( 0 , 16 , 4 ) , seq ( 0 , 16 , 4 ) )
  8. #文字方向水平
  9. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  10. axis ( 1 , - 4 : 4 , - 4 : 4 , las = 1 )
  11. axis ( 2 ,seq ( 0 , 16 , 4 ) , seq ( 0 , 16 , 4 ) , las = 1 )

 

2、字体字号

  cex.axis表示坐标轴刻度值的字号大小,

  font.axis表示坐标轴刻度值的字体,font=1表示正体,2表示黑体,3表示斜体,4表示黑斜体。

 


     
     
  1. x <- seq ( - 4 , 4 , 0.01 )
  2. y <- x ^ 2
  3. par (mfrow = c ( 2 , 2 ) , mar = c ( 4 , 4 , 1 , 1 ) )
  4. #未设置字体字号
  5. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  6. axis ( 1 , - 4 : 4 , - 4 : 4 )
  7. #cex.axis = 2
  8. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  9. axis ( 1 , - 4 : 4 , - 4 : 4 , cex.axis = 2 )
  10. #font.axis = 2
  11. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  12. axis ( 1 , - 4 : 4 , - 4 : 4 , font.axis = 2 )
  13. #font.axis = 3
  14. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  15. axis ( 1 , - 4 : 4 , - 4 : 4 , font.axis = 3 )


 

 

 

 

3、颜色

  col表示图的颜色,用在axis函数中表示坐标轴线和坐标刻度线的颜色;

  col.axis表示坐标轴刻度值的颜色;

  col.ticks表示坐标轴刻度线的颜色。

 


     
     
  1. x <- seq ( - 4 , 4 , 0.01 )
  2. y <- x ^ 2
  3. par (mfrow = c ( 2 , 2 ) , mar = c ( 4 , 4 , 1 , 1 ) )
  4. #未设置颜色
  5. plot (x ,y , ann = F , bty = "n" , xaxt = "n" , yaxt = "n" )
  6. axis ( 1 , - 4 : 4 , - 4 : 4 )
  7. #col = 2
  8. plot (x ,y , ann = F , bty = "n" , xaxt = "n" , yaxt = "n" )
  9. axis ( 1 , - 4 : 4 , - 4 : 4 , col = 2 )
  10. #col.axis = 2
  11. plot (x ,y , ann = F , bty = "n" , xaxt = "n" , yaxt = "n" )
  12. axis ( 1 , - 4 : 4 , - 4 : 4 , col.axis = 2 )
  13. #col.ticks = 2
  14. plot (x ,y , ann = F , bty = "n" , xaxt = "n" , yaxt = "n" )
  15. axis ( 1 , - 4 : 4 , - 4 : 4 , col.ticks = 2 )

 

4、位置

  line表示坐标轴线位置与图像边框的距离,取负数时会画在图像边框以内;

  mgp默认值为c(3, 1, 0),三个数字分别代表坐标轴标题、刻度值和轴线与绘图边框的距离;

  tcl默认值为-0.5,数值表示刻度线长度,负值表示刻度线朝外,正值朝里;

  pos 表示轴线所在的位置;

  line.outer取TRUE时,坐标轴将画在画布边缘处;

  hadj指将刻度值沿平行坐标轴方向调整的距离;

  padj指将刻度值沿垂直坐标轴方向调整的距离。

 


     
     
  1. x <- seq ( - 4 , 4 , 0.01 )
  2. y <- x ^ 2
  3. par (mfrow = c ( 2 , 2 ) , mar = c ( 4 , 4 , 1 , 1 ) )
  4. # 未设置刻度值位置
  5. plot (x , y , ann = F , xaxt = "n" , yaxt = "n" )
  6. axis ( 1 , - 4 : 4 , - 4 : 4 )
  7. # 使用line调整刻度值位置
  8. plot (x , y , ann = F , xaxt = "n" , yaxt = "n" )
  9. axis ( 1 , - 4 : 4 , - 4 : 4 , line = 2 )
  10. # 使用mgp调整刻度值位置
  11. plot (x , y , ann = F , xaxt = "n" , yaxt = "n" )
  12. axis ( 1 , - 4 : 4 , - 4 : 4 , mgp = c ( 3 , 2 , 0 ) )
  13. # 使用padj调整刻度值位置
  14. plot (x , y , ann = F , xaxt = "n" , yaxt = "n" )
  15. axis ( 1 , - 4 : 4 , - 4 : 4 , padj = 1 )

 

 

 

5、其他

  tick取FALSE时,坐标轴线和刻度线不画出;

  lty表示线型,用在axis函数中表示坐标轴线型;

  lwd表示线的粗细,用在axis函数中表示坐标轴线粗细;

  lwd.ticks表示刻度线粗细。

 

三、title函数的用法

  main、sub、xlab和ylab分别表示主标题、副标题、x轴标题和y轴标题;

  cex.lab表示坐标轴标题的字号大小;

  font.lab表示坐标轴标题的字体;

  col.lab表示坐标轴标题的颜色;

  其余参数和axis中用法一致。

 


     
     
  1. x <- seq ( - 4 , 4 , 0.01 )
  2. y <- x ^ 2
  3. par (mfrow = c ( 2 , 2 ) , mar = c ( 4 , 4 , 1 , 1 ) )
  4. #无标题
  5. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  6. axis ( 1 , - 4 : 4 , - 4 : 4 )
  7. axis ( 2 ,seq ( 0 , 16 , 4 ) , seq ( 0 , 16 , 4 ) )
  8. #使用title设置标题
  9. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  10. axis ( 1 , - 4 : 4 , - 4 : 4 , las = 1 )
  11. axis ( 2 ,seq ( 0 , 16 , 4 ) , seq ( 0 , 16 , 4 ) , las = 1 )
  12. title (xlab = 'x' , ylab = 'y' )
  13. #使用line调整位置
  14. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  15. axis ( 1 , - 4 : 4 , - 4 : 4 , las = 1 )
  16. axis ( 2 ,seq ( 0 , 16 , 4 ) , seq ( 0 , 16 , 4 ) , las = 1 )
  17. title (xlab = 'x' , ylab = 'y' , line = 2 )
  18. #调整颜色字体字号
  19. plot (x ,y , ann = F , xaxt = "n" , yaxt = "n" )
  20. axis ( 1 , - 4 : 4 , - 4 : 4 , las = 1 )
  21. axis ( 2 ,seq ( 0 , 16 , 4 ) , seq ( 0 , 16 , 4 ) , las = 1 )
  22. title (xlab = 'x' , ylab = 'y' , col.lab = 2 , font.lab = 4 , cex.lab = 2 )


四、刻度间隔

  plot函数会自动给出比较合理的刻度间隔,本质上是调用了pretty函数。

  pretty(x, n = 5, min.n = n %/% 3,  shrink.sml = 0.75,
         high.u.bias = 1.5, u5.bias = .5 + 1.5*high.u.bias,
         eps.correct = 0, ...)

  x是一个序列,pretty函数会先对x取一个range,然后等分为大约n+1个间隔。如果在作图时对系统自动给出的间隔不满意,可以调整n的值,用pretty函数自定义合适的间隔。

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言作图:坐标轴设置 的相关文章

随机推荐