使用POLYFILL在IDL中绘图

时间:2015-04-23 17:42:26

标签: image plot idl-programming-language

我的主管建议使用以下代码从一组40 x 40图像中提取垂直切片并将其绘制为时间序列(24小时),图像存储在数组中图像= 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),这显然只是给出了一个相同颜色的块。如何获得与像素值对应的不同颜色?

2 个答案:

答案 0 :(得分:1)

只需使用:

max_value = max(ut[*, 20, *])
color=images[i, 20, j] / float(max_value) * 255

确保您处于索引颜色,即您已完成:

device, decomposed=0

并使用已使用的LOADCTTVLCT加载您要使用的颜色表。

答案 1 :(得分:1)

如果你有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更改为您喜欢的任何内容都很容易。