gnuplot - 3D 图上的轮廓,两个不同的数据 zrange
问题描述
我想对一个数据集进行 3D 绘制,并将不同的数据集等高线绘制成一个组合图。(对于那些感兴趣的人,轮廓数据集与 3Dplot 的梯度有关)。从这里改编的代码可以正常工作,除了一个方面:如果我set zrange
用来缩放我的 3D 绘图,轮廓就会消失。Autoranged 3Dplot 看起来不太好,虽然轮廓看起来不错,这就是我想应用自定义范围的原因。我怀疑这个问题也与轮廓的范围有关,以一种不留下轮廓的方式。但是我对 Gnuplot 的经验还不够,无法确定是否真的如此,或者如何解决问题。
这段代码...
reset
set ztics 5
#set zrange [10 : 25] #nowriteback
set view 135,60
set contour base #surface
set cntrlabel font ",7"
set datafile missing "NaN"
set clabel
set cntrparam levels discrete 0.3, 0.4, 0.6, 1.0, 1.5
splot 'out011_Io.txt' nonuniform matrix with lines notitle nocontour, \
'out011_FlxN.txt' nonuniform matrix with lines title "{/Symbol F}_{N}" enhanced nosurface
在激活 zrange 时...
reset
set ztics 5
set zrange [10 : 25] #nowriteback
set view 135,60
set contour base #surface
set cntrlabel font ",7"
set datafile missing "NaN"
set clabel
set cntrparam levels discrete 0.3, 0.4, 0.6, 1.0, 1.5
splot 'out011_Io.txt' nonuniform matrix with lines notitle nocontour, \
'out011_FlxN.txt' nonuniform matrix with lines title "{/Symbol F}_{N}" enhanced nosurface
...创建此图:良好的 3D 图,没有可见的轮廓。
原始数据可以在这里找到:out011_FlxN.txt和out011_Io.txt
来自更多知识渊博的建议受到高度赞赏。
解决方案
如果选中help contour
,gnuplot 会提供绘制轮廓的选项
set contour {base | surface | both}
不幸的是,不是您要求的自定义级别。因此,我对解决方法的建议如下:
- 将数据和轮廓绘制到表格中,例如 datablock
$Cont
。该数据块将包含数据和轮廓线(在您的情况下为 5)以及由 2 条空线分隔的每个子块。 - 未设置的轮廓
- plot
$Cont
,但除了第一个块。在您的情况下,通过index 1:5
.
解释:
for [i=1:LevelCount] $Cont u 1:2:(10):(column(-2)) index i w l lc var ti columnhead(3)
使用由伪列确定的可变颜色$Cont
在恒定 z 水平上绘制块 1 到 5,并作为 keytitle。显然,在您的情况下,只有 4 条等高线,即在.(10)
lc var
(column(-2))
columnhead(3)
0.3
代码:
### contour plot at custom level
reset session
set contour base
set cntrparam levels discrete 0.3, 0.4, 0.6, 1.0, 1.5
set table $Cont
splot "out011_FlxN2.txt" nonuniform matrix
unset table
unset contour
set key at screen 0.16, screen 1 title "{/Symbol F}_{N}"
set view 135,60
set xyplane relative 0
LevelCount = 5
splot "out011_Io.txt" nonuniform matrix w l notitle, \
for [i=1:LevelCount] $Cont u 1:2:(10):(column(-2)) index i w l lc var ti columnhead(3)
### end of code
结果:
推荐阅读
- bash - vsearch - 多线程集群
- flask - Flask wtforms Date and Time,选择器可用于新条目,但不能用于更新,尽管模板相同
- php - 注意:未定义的偏移量:使用爆炸时第 212 行 C:\wamp64\www\index.php 中的 1
- websphere - 支持jpa2.2的websphere
- ios - iOS 13.4.1 模拟器上的 CIImage 崩溃
- spring-boot - Jackson include non_null not working on object from kotlin extension function
- excel - 检查列中是否存在值。CountIf 或 Autofilter->If 过滤范围不是 Nothing
- sql - 数据库原型 Postgresql:错误:没有唯一约束匹配引用表“消息”的给定键
- c# - 从 UTC 转换回来
- python - 从 Pandas 读取 excel 文件时出错