在gnuplot中以球坐标绘制矩形

问题描述 投票:0回答:1

我有以下数据集: grid 这是使用 Leopardi 等人 2006 年算法的球形划分。每个网格单元都是球坐标系中的一个矩形,由左上角 (theta0,phi0) 和右下角 (theta1,phi1) 定义。我通过为每个矩形生成很多点并使用 splot 绘制所有点来绘制上面的图。但我真正想要的是用不同的纯色绘制每个矩形。

链接中的示例接近我想要做的,使用

set obj 1 rect
命令。我想做的是这样的:

set obj 1 rect from spherical THETA0,PHI0,R to spherical THETA1,PHI1,R
然后对许多不同的矩形重复此操作。但当然这是行不通的,因为 gnuplot 坐标中没有“球形”选项。有一个“极坐标”选项,但它仅适用于 2D 极坐标或 3D 柱坐标。

有谁知道如何用 gnuplot 绘制在球坐标中定义的彩色矩形吗?

visualization gnuplot spherical-coordinate
1个回答
0
投票
据我所知,没有简单的在球坐标中绘制矩形的方法,如果我错了,请纠正我。您没有向脚本显示实际创建图形的方式,除非您写道您已经创建了很多点来绘制球形矩形。我想这就是你必须做的。但是,您可以“简单地”让 gnuplot 使用“用户友好”的输入来完成它。

一些评论,但没有过多讨论细节:

    有选项
  • set mapping spherical
    (选中
    help mapping
  • 定义
  • [t=0:1]
     范围内的参数函数,描述矩形的轮廓
  • 定义一个虚拟数组
  • A
    ,以便在由输入数据块定义的循环中绘制矩形 
    $Data
    
    
  • 在循环的每次迭代中,使用函数调用
  • tmp=init(i)
     将参数从数据块 
    $Data
     获取到变量 
    x0,y0,dx,dy
    
    
  • 该脚本使用位于 gnuplot 目录中的文件
  • world.dat
    
    
  • 当然还有改进的空间。

脚本:

(需要 gnuplot>=5.2.0,因为使用数组) ### plotting spherical rectangles reset session set view equal xyz set view 60,100,1.97 set isosamples 19,25 set mapping spherical set xyplane relative 0 set angles degrees unset key unset border unset tics set parametric set hidden3d offset 0 set urange [-90:90] set vrange [0:360] # LAT0 LON0 LAT1 LON1 color $Data <<EOD 63 0 35 22 0xff0000 10 -5 -10 10 0x00cc00 52 -40 8 -25 0x0000ff EOD R = 6371 # earth radius N = 32 # choose a number divisible by 4 array A[N+1] # dummy array rectX(i,t) = t<0.25 ? 4*dx*t : t<0.5 ? dx : t<0.75 ? 4*dx*(0.75-t) : 0 rectY(i,t) = t<0.25 ? 0 : t<0.5 ? 4*dy*(t-0.25) : t<0.75 ? dy : 4*dy*(1-t) init(i) = (x0=real(word($Data[i],2)), y0=real(word($Data[i],1)), \ dx=real(word($Data[i],4))-x0, dy=real(word($Data[i],3))-y0) lon(i,t) = rectX(i,t) + x0 lat(i,t) = rectY(i,t) + y0 color(i) = int(word($Data[i],5)) splot R*cos(u)*cos(v), R*cos(u)*sin(v), R*sin(u) w l lc rgb "grey" , \ 'world.dat' u 1:2:(R) w l lc "black", \ for [i=1:|$Data|] tmp=init(i) A u (lon(i,$0/N)):(lat(i,$0/N)): \ (R):(color(i)) w l lw 2 lc rgb var ### end of script

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.