“IDL8”的版本间差异
跳到导航
跳到搜索
第45行: | 第45行: | ||
===IDL graphics=== |
===IDL graphics=== |
||
新的图形系统相比于之前的Direct Graphics系统的差别是可以动态的调整图形元素 |
新的图形系统相比于之前的Direct Graphics系统的差别是可以动态的调整图形元素 |
||
====plot函数==== |
|||
p = PLOT(data, '-r2+') |
p = PLOT(data, '-r2+') |
||
;Tokens in the Format string represent values of the LINESTYLE, COLOR, THICK, and SYMBOL properties. |
;Tokens in the Format string represent values of the LINESTYLE, COLOR, THICK, and SYMBOL properties. |
||
:axes |
|||
*linestyle |
|||
*axes |
|||
p = PLOT(/TEST) |
p = PLOT(/TEST) |
||
ax = p.AXES |
ax = p.AXES |
||
第57行: | 第61行: | ||
ax[0].showtext=0 ;隐藏坐标上的数字和title,画紧凑直方图很有用 |
ax[0].showtext=0 ;隐藏坐标上的数字和title,画紧凑直方图很有用 |
||
*text函数 和原来的xyouts对应 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
*streamline |
|||
⚫ | |||
⚫ | |||
*生成图形的code [http://www.harrisgeospatial.com/docs/generatecode.html] |
*生成图形的code [http://www.harrisgeospatial.com/docs/generatecode.html] |
||
第95行: | 第89行: | ||
p[2].Save, 'data1.pdf', /APPEND, /CLOSE |
p[2].Save, 'data1.pdf', /APPEND, /CLOSE |
||
====legend==== |
|||
a = findgen(11) |
a = findgen(11) |
||
b = 20./(a+1)^2 |
b = 20./(a+1)^2 |
||
第102行: | 第97行: | ||
h = LEGEND(POSITION=[9,50],label=['haha','papa'] /DATA) |
h = LEGEND(POSITION=[9,50],label=['haha','papa'] /DATA) |
||
====text函数 ==== |
|||
⚫ | |||
和原来的xyouts对应, 直接支持latex符号 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
*直接支持latex符号,text函数 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
====axes==== |
|||
*AXES可以直接在image上画坐标轴 |
*AXES可以直接在image上画坐标轴 |
||
2017年1月4日 (三) 13:32的版本
相对于IDL7.1的IDL8系列的新功能
功能
- python bridge
- jupyter(pyhton), IDL kernel, 参见[1]
- 将复制到<IDL_DIR>/lib/bridges/kernels/IDL/kernel.json 复制到~/share/jupyter/kernels/IDL
- 设置,PATH包含IDL的可执行命令文件夹
- 设置环境变量PYTHON包含IDL和PYTHON的可执行命令文件夹
函数
- idl_convert (单位转换,很实用),参见IDLUNIT()
变量
- 变量的运算 [2]
var = RANDOMU(seed, 200, 100) PRINT, var.length PRINT, var.ndim PRINT, var.dim PRINT, var.typecode PRINT, var.typename PRINT, var1.Mean() PRINT, var1.Total() var2 = var1.Sort()
- biginteger
- 任意位数的整数
系统变量
- !const
- 常用物理常数
函数
- FOLDERWATCH
- 监控文件夹
- CODE_COVERAGE
- 监控那些CODE被执行 (选择判断)
- FFT Power Spectrum
画图
IDL graphics
新的图形系统相比于之前的Direct Graphics系统的差别是可以动态的调整图形元素
plot函数
p = PLOT(data, '-r2+') ;Tokens in the Format string represent values of the LINESTYLE, COLOR, THICK, and SYMBOL properties.
- linestyle
- axes
p = PLOT(/TEST) ax = p.AXES ax[0].TITLE = 'X axis' ax[1].TITLE = 'Y axis' ax[2].HIDE = 1 ; hide top X axis ax[3].HIDE = 1 ; hide right Y axis ax[0].showtext=0 ;隐藏坐标上的数字和title,画紧凑直方图很有用
- 画多个panel的时候可以用layout关键词,而且可以动态调整
fn = exp(SIN(FINDGEN(100))^FINDGEN(100)) w1 = WINDOW() p1 = PLOT(fn, LAYOUT = [1, 2, 1], /CURRENT, TITLE = '1') p2 = PLOT(fn, LAYOUT = [2, 2, 3], xrange=[25, 42], /CURRENT, TITLE = '2') p3 = PLOT(fn, LAYOUT = [2, 2, 4], xrange=[50, 60], /CURRENT, TITLE = '3')
- colorbar 用法更自由,target关键词,不需要自己设计
- 生成图形的code [3]
- p.GenerateCode, 'mycode.pro'
- save
- 可以直接把图保存成文件
p = OBJARR(3) ; Create three plots with random data FOR i = 0, 2 DO BEGIN t = 0.1*FINDGEN(50) y = SMOOTH(RANDOMU(seed,50), 5) p[i] = PLOT(t,y,'b', SYMBOL='D', TITLE='Observation'+STRING(i+1)) ENDFOR ; Build the multi-page PDF file, one page at a time p[0].Save, 'data1.pdf', /APPEND p[1].Save, 'data1.pdf', /APPEND p[2].Save, 'data1.pdf', /APPEND, /CLOSE
legend
a = findgen(11) b = 20./(a+1)^2 p1 = PLOT(a, b, '4', /HISTOGRAM, NAME='Theoretical', /YLOG, YRANGE=[0.01,100]) p2 = PLOT(RANDOMU(-1, 11), '4r', NAME='Experimental', TRANSPARENCY=50, /HISTOGRAM, /OVERPLOT) h = LEGEND(POSITION=[9,50],label=['haha','papa'] /DATA)
text函数
和原来的xyouts对应, 直接支持latex符号
errorplot
完整的误差棒程序
barplot
- 棒状图
boxplot
polarplot
- 极坐标
vector
- 画矢量图(箭头)
symbol
- 画符号,支持latex
axes
- AXES可以直接在image上画坐标轴
image
- 函数
- RGB_VALUE : 选择color bar
- max:可以用最大值归一化
- axis: 图像是否显示坐标轴
- p.axes 可定制
p=image(Agez,position=[0.15,0.1,0.9,0.5],max=max(Agez),RGB='rainbow',axis=1,$ xtitle='Age (Gy)',ytitle='$Z/Z_\odot$',/current) ax=p.axes ax[0].tickvalues=[0,2,4,7,9,11,13,15,17,19] ax[0].tickname=['0.001','0.01','0.1','1','3','5','7','9','11','13'] ax[1].tickname=['0.005','0.002','0.02','0.04','1','2.5']
地图相关
- map (可以投影天球)
mymap = MAP('hammer', FILL_COLOR="light_blue") ; Convert from longitude/latitude to meters longitudes = [-83.02, 88.50] latitudes = [42.42, 47.17] xy = mymap.MapForward(longitudes, latitudes) ; Convert back to longitude/latitude and plot EXPAND, xy, 2, 20, xycoordinates lonlat = mymap.MapInverse(xycoordinates) p = PLOT(lonlat[0,*], lonlat[1,*], 'rS', /OVERPLOT, /SYM_FILLED)
数组运算
- array_equal