使用 POLYFILL 在 IDL 中绘图
Plotting in IDL using POLYFILL
我的主管建议使用以下代码从一组 40 x 40 图像中提取垂直切片并将它们绘制为时间序列(24 小时),图像存储在数组 'images = FLTARR(no_images, 40,40)' 中,以及相应的时间在数组中 UT=FLTARR(no_images):
PLOT, [0],[0], /NODATA, XRANGE=[0,24], XSTYLE, YRANGE=[-40,40], /YSTYLE
FOR i=0, no_images-1 DO BEGIN
FOR j=0, 39 DO BEGIN
POLYFILL, UT(i)+[0,0,1,1]*2/60.0, (j+[0,1,1,0])*2-40, COL=[work out what colour you want the pixel to be in terms of the value in images(i,20,j) ]
ENDFOR
ENDFOR
图像以 2 分钟为间隔拍摄。
我明白这里要做什么 - 本质上是绘制小矩形来表示图像中的像素。我的问题是 COL 参数应该是什么?有人可以给我举个例子吗?在测试代码的那一刻,我只是输入了一个固定值(例如 255),这显然只是给出了一个相同颜色的块。如何获得对应像素值的不同颜色?
只需使用:
max_value = max(ut[*, 20, *])
color=images[i, 20, j] / float(max_value) * 255
确保您使用的是索引颜色,即您已完成:
device, decomposed=0
并使用 LOADCT
或 TVLCT
加载您要使用的颜色 table。
如果您有 IDL 8.4+,您也可以使用新图形
no_images = 100
ut = FINDGEN(100)/100*24
img = bytscl(randomu(seed,no_images,40))
y = FINDGEN(40)
p = PLOT(ut, y, XSTYLE=1, YSTYLE=1, XRANGE=[0,24], YRANGE=[0,40], $
/NODATA, TITLE='My Data',XTITLE='X',YTITLE='Y')
i = IMAGE(img, ut, y, /OVERPLOT, RGB_TABLE=74, ASPECT_RATIO=0.5)
您可以调整 ASPECT_RATIO 使您的图像看起来更正方形。而且很容易将 RGB_TABLE 更改为您想要的任何一个。
我的主管建议使用以下代码从一组 40 x 40 图像中提取垂直切片并将它们绘制为时间序列(24 小时),图像存储在数组 'images = FLTARR(no_images, 40,40)' 中,以及相应的时间在数组中 UT=FLTARR(no_images):
PLOT, [0],[0], /NODATA, XRANGE=[0,24], XSTYLE, YRANGE=[-40,40], /YSTYLE
FOR i=0, no_images-1 DO BEGIN
FOR j=0, 39 DO BEGIN
POLYFILL, UT(i)+[0,0,1,1]*2/60.0, (j+[0,1,1,0])*2-40, COL=[work out what colour you want the pixel to be in terms of the value in images(i,20,j) ]
ENDFOR
ENDFOR
图像以 2 分钟为间隔拍摄。
我明白这里要做什么 - 本质上是绘制小矩形来表示图像中的像素。我的问题是 COL 参数应该是什么?有人可以给我举个例子吗?在测试代码的那一刻,我只是输入了一个固定值(例如 255),这显然只是给出了一个相同颜色的块。如何获得对应像素值的不同颜色?
只需使用:
max_value = max(ut[*, 20, *])
color=images[i, 20, j] / float(max_value) * 255
确保您使用的是索引颜色,即您已完成:
device, decomposed=0
并使用 LOADCT
或 TVLCT
加载您要使用的颜色 table。
如果您有 IDL 8.4+,您也可以使用新图形
no_images = 100
ut = FINDGEN(100)/100*24
img = bytscl(randomu(seed,no_images,40))
y = FINDGEN(40)
p = PLOT(ut, y, XSTYLE=1, YSTYLE=1, XRANGE=[0,24], YRANGE=[0,40], $
/NODATA, TITLE='My Data',XTITLE='X',YTITLE='Y')
i = IMAGE(img, ut, y, /OVERPLOT, RGB_TABLE=74, ASPECT_RATIO=0.5)
您可以调整 ASPECT_RATIO 使您的图像看起来更正方形。而且很容易将 RGB_TABLE 更改为您想要的任何一个。