跳转至

糖球图

原文链接: https://www.nv5geospatialsoftware.com/Learn/Blogs/Blog-Details/gum-drop-plot

17691 评价本文:

暂无评分

糖球图

匿名 2014年7月3日 星期四

在我们的 IDL 页面 上,有一张展示了一系列彩色球体构成的绘图图像。根据我的研究,这幅图是很久以前生成的,很可能使用了 IDL 对象图形系统

我想使用 IDL 8 图形函数来生成一个类似的绘图。为此,我使用了 SCATTERPLOT3D 程序、ORB对象(随 IDL 发布但不提供文档说明)以及 POLYLINE 程序。一个输出示例如下所示:

用于生成此绘图的数据是随机生成的。因此,如果您运行代码,每次的输出都会有所不同。生成此绘图的代码如下所示:

pro gum_drop

  compile_opt idl2

  ;生成一些用于
  ;绘图的随机数据
  x = RANDOMU(seed, 10)
  y = RANDOMU(seed, 10)
  z = RANDOMU(seed, 10)

  ;绘制一个初始散点图
  ;符号大小为1
  scat_plot = scatterplot3d(x,y,z,RGB_TABLE=2, $
              SYM_OBJECT=orb(),$ ;使用orb对象作为符号
              SYM_SIZE=1, $ ;设置符号大小为1
              MAGNITUDE=z, $ ;用Z值改变颜色
              /SYM_FILLED, clip=0,$ ;填充符号且无裁剪
              xticklen=0, yticklen=0, zticklen=0, $ ;移除刻度线
              xsubticklen=0, ysubticklen=0, zsubticklen=0, $ ;移除刻度线
              xmajor=5, ymajor=5, $ ;每条轴仅使用5个刻度
              xrange=[0,1], yrange=[0,1],$ ;强制X和Y轴范围
              ASPECT_RATIO=1.0,$  ;不扭曲图像
              DEPTH_CUE=[0,4], $ ;使远处的物体淡化
              AXIS_STYLE=2, $  ;将坐标轴设为方框形式
              background_color = 'light yellow')


  ;再绘制9个图,其中每个图的符号大小
  ;都会变化
  for ind = 2L, 10 do begin
   z = RANDOMU(seed, 10)
   scat_plot_loop = scatterplot3d(x,y,z,$
      RGB_TABLE=2, SYM_OBJECT=orb(),SYM_SIZE=ind/2, $
      MAGNITUDE=z, /SYM_FILLED, clip=0, /OVERPLOT)
  endfor

  ;生成多边形以在Z-Y和Z-X平面上
  ;创建网格
  x = [0.25,0.25,0.5,0.5,0.75,0.75]
  y = [0.999,0.999,0.999,0.999,0.999,0.999]
  z = [0.00,1.00,0.0,1.0,0.00,1.00]

  ;使用CONNECTIVITY关键字
  ;将多边形数据中的每两个点用线连接起来
  con = [2,0,1,2,2,3,2,4,5]

  poly0 = polyline(x,y,z,/DATA,CONNECTIVITY=con)

  temp = x
  x=y
  y=temp

  poly1 = polyline(x,y,z,/DATA,CONNECTIVITY=con)

  temp = z
  z = y
  y = temp

  poly2 = polyline(x,y,z,/DATA,CONNECTIVITY=con)

  temp = x
  x=y
  y=temp

  poly3 = polyline(x,y,z,/DATA,CONNECTIVITY=con)

  ;从绘图前方
  ;移除坐标轴
  ax = scat_plot.AXES
  ax[2].hide=1
  ax[6].hide=1
  ax[7].hide=1
  ax[3].ticklen=1.0
  ax[1].ticklen=1.0

end

反射光谱分析时有何预期 量纲分析、单位换算与物理常数