Multiplot

来自Shiyin's note
跳到导航 跳到搜索
  • 默认的!p.multi=[i,n,m]可实现多个panel,但是每个panel都有自己的x,y坐标轴,有时显得不够紧凑
  1. 解决办法是再额外定义!Y.margin 和!X.margin 默认值是!X.magrin=[10, 3] !Y.margin=[10, 3]
  • astro_lib中的multiplot可实现紧凑的多panel图
  • 完全自定义
  • 前面两总方案当中,不能在plot里面再设置margin,必须提前使用!X.magrin=[10,10]之类的方式

multiplot

multiplot, pmulti, gap=, xgap=, ygap=, /square, /doxaxis, /doyaxis, 
      mTitle=, mTitSize=, mTitOffset=, mxTitle=, mxTitSize=, mxTitOffset=, 
      myTitle=, myTitSize=, myTitOffset=, xtickformat=, ytickformat=
      /default, /reset, /rowmajor, /initialize
  • mxtitsize=1.5 比较合适
  • mxtitoffset 必须设置好比如=5或者10,不然title和ticks拥挤在一起

例子

multiplot,/init
multiplot,[1,3]
plot,x,y,ytitle='y'
multiplot
plot,x,y
multilplot
plot,x,y,,xtitle='x',ytitle='y'
multilplot,/rest ;貌似不工作,还不如 /init

这样得到的图的panel是合在一起的

自定义

  • position可精确定位plot的位置,在0-1范围内 例如POS=[0., 0.5, 0.5, 1.0]
注意在使用position定义位置的时候,一定要事先定义好Data的范围,就是Xrange和Yrange。
  • [x,y,z]margin可控制图离边界的距离 默认xmargin=[10,3],ymargin=[4,2]单位是字符的宽度,可以更改数值,甚至为负
  • 生成坐标,但是不label坐: 用[x,y,z]tickv=replicate(' ',N+1),[x,y,z]ticks=N