如何在idl中制作“颜色图”图



我希望能够制作由下面显示的代码生成的图形(但使用对数轴(。我有一个包含数据的 2D 矩阵,我知道一个单元格和另一个单元格之间的分隔位置(如果以对数刻度查看,则等距(。我在下面报告的代码模拟了我想要获得的代码,但它使用Hist_2D,因此我认为它在我的情况下不可用。

我的数据示例:

数据是矩阵 9*9

   data [0.000     0.000     0.000     0.000     0.000     0.000     0.000     0.000     0.000
0.429     0.143     0.000     0.000     0.048     0.000     0.000     0.000     0.000
0.857     0.810     0.667     0.429     0.429     0.286     0.190     0.286     0.143
0.952     0.952     0.905     0.857     0.857     0.905     0.857     0.762     0.810
1.000     1.000     0.952     0.952     0.952     0.952     0.952     0.952     1.000
1.000     1.000     1.000     1.000     1.000     1.000     1.000     1.000     1.000
1.000     1.000     1.000     1.000     1.000     1.000     1.000     1.000     1.000
1.000     1.000     1.000     1.000     1.000     1.000     1.000     1.000     1.000
1.000     1.000     1.000     1.000     1.000     1.000     1.000     1.000     1.000]

x e y 是长度为 10 的两个向量

x [0.189036 0.484322 0.779609 1.07489 1.37018 1.66547 1.96075 2.25604 2.55133]
y [ -1.06208 -0.584192 -0.106299 0.371593 0.849485 1.32738 1.80527 2.28316 2.76105]

法典

PRO Plot2
x = cgScaleVector(Randomn(-3L, 100000)*3., -10, 10)
y = cgScaleVector(Randomn(-5L, 100000)*10., 0, 100)
xrange = [Min(x), Max(x)]
yrange = [Min(y), Max(y)]
xbinsize = 0.25
ybinsize = 3.00
cgDisplay
density = Hist_2D(x, y, Min1=xrange[0], Max1=xrange[1], Bin1=xbinsize, Min2=yrange[0], Max2=yrange[1], Bin2=ybinsize)   
maxDensity = Ceil(Max(density)/1e2) * 1e2
scaledDensity = BytScl(density, Min=0, Max=maxDensity)
cgLoadCT, 33
TVLCT, cgColor('gray', /Triple), 0
TVLCT, r, g, b, /Get
palette = [ [r], [g], [b] ]
cgImage, scaledDensity, XRange=xrange, YRange=yrange, /Axes, Palette=palette, $
  XTitle='Concentration of X', YTitle='Concentration of Y', $
  Position=[0.125, 0.125, 0.9, 0.8]
thick = (!D.Name EQ 'PS') ? 6 : 2
cgContour, density, LEVELS=maxDensity*[0.25, 0.5, 0.75], /OnImage, $
   C_Colors=['Tan','Tan', 'Brown'], C_Annotation=['Low', 'Avg', 'High'], $
   C_Thick=thick, C_CharThick=thick

cgColorbar, Position=[0.125, 0.875, 0.9, 0.925], Title='Density', $
   Range=[0, maxDensity], NColors=254, Bottom=1, OOB_Low='gray', $
   TLocation='Top'
END ;*****************************************************************

Plot2
END

感谢您的帮助!

在您发布的代码中,Hist_2D计算然后由 cgImage 显示的密度图。由于您已经有了要显示的矩阵(data(,因此您可以简单地运行: cgImage, data, /axes, /scale, /keep, xrange=[0.04,2.70], yrange=[-1.30,3.00]

最新更新