gnuplot - gnuplot 中的 splot 和箭头坐标之间是否存在不匹配或者我遗漏了什么?
问题描述
我正在尝试绘制以下 3 个相交平面:
x + 2y + 4z = 7
2x + 3y + 3z = 1
3x + 7y + 2z = -11
为了增加重点,我想在每对平面的交叉点上加入一些无头箭头和一个小球体来指示交叉点。但由于某种原因,飞机本身似乎与轴不对齐。从方程中,我可以很容易地找到交点的坐标,找到沿着每对平面的交点延伸的线条边缘的坐标,如果需要,找到线条的参数方程。但是到目前为止,当我将线从绘图的边缘绘制为箭头或将交叉点绘制为圆形时,平面似乎错误地定位在坐标内。我可以看到圆圈或线条的位置正确,但平面本身似乎已经移动。这可能是什么原因造成的?我输入的方程式错误吗?也许 xy 平面的移动会使事物四处移动?我认为这一定是我没有看到的明显的东西。我觉得这很令人费解。
reset
samps = 500
set samples samps,samps
set isosamples samps,samps
f(x,y) = 7/4 - x/4 - y/2
set table $Data01
splot f(x,y)
unset table
g(x,y) = 1/3 - 2/3*x - y
set table $Data02
splot g(x,y)
unset table
h(x,y) = -11/2 - 3/2*x - 7/2*y
set table $Data03
splot h(x,y)
unset table
Zmin = 1.0
Zmax = 3.5
set xrange [-1.2:0.5]
set yrange [-4:0]
set zrange [Zmin:Zmax]
set hidden3d
set xlabel 'x'
set ylabel 'y'
set zlabel 'z'
set xyplane at Zmin
unset xzeroaxis
unset yzeroaxis
unset zzeroaxis
set border 1023-128
set xtics out nomirror
set ytics out nomirror
set ztics out
#set xtics add ('' -4)
Frac(z) = (z - Zmin) / (Zmax - Zmin)
#MyPalette01
Red01(z) = 0
Green01(z) = 255*256
Blue01(z) = int(255*Frac(z))
MyPalette01(z) = Red01(z) + Green01(z) + Blue01(z)
#MyPalette02
Red02(z) = 255*256*256
Green02(z) = int(165*Frac(z))*256
Blue02(z) = 0
MyPalette02(z) = Red02(z) + Green02(z) + Blue02(z)
# MyPalette03
Red03(z) = int(-95*Frac(z)+255)*256*256
Green03(z) = int(32*Frac(z))*256
Blue03(z) = int(-15*Frac(z)+255)
MyPalette03(z) = Red03(z) + Green03(z) + Blue03(z)
#Red03(z) = int(255*Frac(z))*256*256
#Green03(z) = int(255*Frac(z))*256
#Blue03(z) = int(255*Frac(z))
set object circle at -1,-2,3 size 0.05 front
unset key
set pm3d
set pm3d lighting primary 0.5 specular 0.6
set pm3d ftriangles
set style fill transparent solid 0.75 noborder
set pm3d depthorder
unset colorbox
set view 68, 126
splot $Data01 u 1:2:3:(MyPalette01($3)) w l lc rgb var notitle, \
$Data02 u 1:2:3:(MyPalette02($3)) w l lc rgb var notitle, \
$Data03 u 1:2:3:(MyPalette03($3)) w l lc rgb var notitle
我在这里找到了如何为每个平面设置多种样式: Gnuplot 5.2 splot: Multiple pm3d palette in one plot call
这就是它的外观:
解决方案
推荐阅读
- flutter - Flutter:ModalBottomSheet 与 ListView.separated() 大小到内容
- c# - 使用 LINQ Query 加入两个列表并仅显示相关数据
- grails - 更新用户配置文件时,无需用户输入即可将权限分配给用户
- spring-boot - 我是响应式编程的新手,尝试使用 Mono 和 concat 进行 UPSERT 操作,并在存储库中存在值
- html - CSS-Grid 中的网格
- javascript - React 刷新重定向到主页,与刷新页面的 url 相同
- typescript - Angular Test Simple Component -> NullInjectorError: No provider for xxx
- javascript - 在 Kotlin 的 WebView 的 JavascriptInterface 中执行页面的 JavaScript
- android - 当我点击 TextField 然后键盘打开但 TextField 没有在顶部颤动 Android 上滑动
- javascript - jQuery 函数不运行以显示“模态”元素