楼主: 林随机漫步
1509 0

[学习分享] R语言 双坐标轴组合图形可视化实现 [推广有奖]

  • 1关注
  • 3粉丝

已卖:1份资源

硕士生

7%

还不是VIP/贵宾

-

威望
0
论坛币
154 个
通用积分
102.8396
学术水平
11 点
热心指数
11 点
信用等级
11 点
经验
1957 点
帖子
67
精华
0
在线时间
138 小时
注册时间
2014-1-11
最后登录
2025-9-29

楼主
林随机漫步 发表于 2020-3-30 12:21:26 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. 1、plotrix包 twoord.plot用法和参数解释

  2. # 1、用法/Usage:
  3. twoord.plot(lx,ly,rx,ry,data=NULL,main="",xlim=NULL,lylim=NULL,rylim=NULL,
  4. mar=c(5,4,4,4),lcol=1,rcol=2,xlab="",lytickpos=NA,ylab="",ylab.at=NA,
  5. rytickpos=NA,rylab="",rylab.at=NA,lpch=1,rpch=2,
  6. type="b",xtickpos=NULL,xticklab=NULL,halfwidth=0.4,axislab.cex=1,
  7. do.first=NULL,xaxt="s",...)

  8. # 2、参数解释:
  9. 1、lx,ly,rx,ry:左坐标轴和右坐标轴的值
  10.    注意:lx和rx值至少相邻,并且可能重叠
  11. 2、data:数据框
  12. 3、main:标题
  13. 4、xlim、lylim,rylim:限制横坐标值、左右纵坐标值的范围
  14. 5、mar:设置图形边界距,默认值为(5,4,4,4)
  15. 6、lcol、rcol:左右坐标轴的颜色
  16. 7、xlab:设置横坐标轴标签
  17. 8、lytickpos:设置左坐标轴刻度标签的位置
  18. 9、ylab:设置左坐标轴标签
  19. 10、ylab.at:设置左坐标轴标签位置
  20. 11、rytickpos:设置右坐标轴刻度标签的位置
  21. 12、rylab:设置右坐标轴标签
  22. 13、rylab.at:设置右坐标轴标签位置
  23. 14、type:指定图形类型 type
  24.   "p" for points,"l" for lines,"b" for both,"c" for the lines part alone of "b",
  25.   "o" for both ‘overplotted’,"h" for ‘histogram’ like (or ‘high-density’) vertical lines,
  26.   "s" for stair steps,"S" for other steps, see ‘Details’ below,
  27.   "n" for no plotting.
  28. 15、xtickpos:设置横坐标轴刻度标签位置
  29. 16、xticklab:设置横坐标轴刻度标签
  30. ……
  31. 详见R-gui帮助文档,代码:help(plotrix)


  32. ### 声  明:本内容为作者借助R3.6.3和Rstudio及相关包制作而成,仅供学习交流,咨询交流加wx:huyanggs 或Email:huyanggs@hotmail.com
  33. ### 主  题:双(Y)坐标轴制图
  34. ### 数据源:随机生成的数据集,未设置set.seed()
  35. ### author:@拴小林Nobeli
  36. ### 时  间:2020/3/29

  37. ## 1、加载plotrix包
  38. # install.packages("plotrix")
  39. library(plotrix)


  40. ## 2、简单双坐标折线图(x周数值包含)
  41. xval1 <- 2:10
  42. xval2 <- 1:15
  43. going_up <- seq(3,7,by=0.5)+rnorm(9)
  44. going_down <- rev(60:74)+rnorm(15)

  45. twoord.plot(lx = xval1,ly = going_up, rx = xval2, ry = going_down,xlab="Sequence",
  46.             ylab="Ascending values",rylab="Descending values",lcol=4,
  47.             main="Plot with two ordinates - points and lines",
  48.             do.first="plot_bg();grid(col=\"white\",lty=2)")


  49. ## 3、简单双坐标折线图(x周数值重叠一致)
  50. xval <- seq.Date(as.Date("2017-01-01"),
  51.                  as.Date("2017-01-15"), by="day")

  52. going_up<-seq(3,7,length.out = 15)+rnorm(15)
  53. going_down<-rev(60:74)+rnorm(15)
  54. twoord.plot(xval, going_up, xval, going_down,xlab="Sequence",
  55.             ylab="Ascending values",rylab="Descending values",lcol=4,
  56.             main="Plot with two ordinates - points and lines",
  57.             xtickpos=as.numeric(xval), xticklab=as.character(xval),
  58.             do.first="plot_bg();grid(col=\"white\",lty=1)")
  59. # 注释:xtickpos=as.numeric(xval), xticklab=as.character(xval)两个参数是控制x轴显示日期的关键,请知晓~


  60. ## 4、折线&柱形混合双坐标图形
  61. twoord.plot(xval1, going_up, xval2, going_down, xlab="Sequence",
  62.             lylim=c(-3,8), rylim=c(50,100), type=c("l","bar"),
  63.             ylab="Ascending values", rylab="Descending values",
  64.             text = list(going_up,going_down),
  65.             lytickpos=3:7, rytickpos=seq(55,75,by=5), ylab.at=5,rylab.at=65,
  66.             main="Lines on left axis, bars on right axis(含点数值标签)",
  67.             lcol="red", rcol=4,do.first="plot_bg(\"white\")")

  68. ## 4.添加数值标签到图表中(补充:此部分为@拴小林Nobeli编写,因没有找到x相应参数,如有相关参数,望交流,感谢!!)
  69. #注意:
  70. # 1.添加left线形图形标签可直接使用text函数,
  71. # 2.但right柱形图形标签不适合直接使用text标签,需要将右侧ry值等比例转换为ly值
  72. # 3.转换公式:(ry-min(rylim))/(max(rylim)-min(rylim))* (max(lylim)-min(lylim))+ min(lylim)+位置调整值
  73. text(xval1, going_up,as.numeric(round(going_up)))
  74. text(xval2,
  75.      (going_down-min(c(50,100)))/(max(c(50,100))-min(c(50,100)))*(max(c(-3,8))-min(c(-3,8)))+min(c(-3,8)+0.5),
  76.      round(going_down))



  77. ## 5、带概率密度的双坐标图
  78. xhist<-hist(rnorm(100),plot=FALSE)
  79. xdens<-dnorm(seq(-3,3,by=0.05))
  80. twoord.plot(xhist$mids,xhist$counts,seq(-3,3,by=0.05),
  81.             xdens,type=c("bar","l"),lcol=4,rcol=2,ylab="Counts",
  82.             rylab="Density",main="Histogram and density curve",
  83.             halfwidth=0.2,lylim=c(0,max(xhist$counts)+1),rylim=c(0,0.45),lwd=2)
复制代码

v2-8ab94d1b4e20f192725707c038009d43_720w.jpg 1.jpg
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-8 03:18