plot - 来自多个 2D 数据文件的 gnuplot 3D 围栏图,带有 zerrorfill
问题描述
我目前正在 gnuplot 围栏图中绘制多个 2D (x,y) 数据文件。
我创建了一个包含所有文件的列表
list='file1.dat file2.dat file3.dat'
以这种方式添加第 3 轴的 z 值
z_index='1 2 3'
然后我可以绘制,以便每个数据文件对应不同的 z 值
splot for [i=1:words(list)] word(list,i) u (real(word(z_index,i))):($1):($2) w l
但是,我想使用带有透明度的 zerrorfill 来做同样的事情,因为 fillcurve 不允许我以直接的方式进行操作。
我从手册中知道栅栏图是由带有 zerrorfill 的 splot 使用 input columns 生成的i y z_base z_base Fi(y)
,但我不明白如何传输我的代码来填充 zerrorfill 语法。
有什么解决办法吗?请评论代码将不胜感激!
解决方案
如果您的 gnuplot 足够新以具有绘图样式“zerrorfill”,那么它也足够新以使用数组。我建议使用数组作为文件名和 y(不是 z)索引比使用“word(string,i)”更容易阅读。
您没有准确解释二维数据文件中的 y 值。我将在第 2 列中假设一个 y 值和一个填充 y=0 和 y=column(2) 之间区域的围栏图,除了 3D 图我们将使用它来表示 z 而不是 y。
array file[3] = ["file1.dat", "file2.dat", "file3.dat"]
array y_index[3] = [1, 2, 3]
set zrange [0:*]
set xyplane 0
splot for [k=1:3] file[k] using 1:(y_index[k]):2:(0):2 with zerrorfill \
linetype k fillstyle transparent solid 0.5
推荐阅读
- c# - linq 或 lambda 语法中共同朋友的等效查询
- python - 使用 python 和 beautifulsoup 获取联系信息
- rust - 如果条目已经存在,如何避免使用 HashMap entry/or_insert 习惯用法移动键?
- java - 带有 Long 类型键的 spring data redis zadd 不起作用
- android - 在 OpenGL Android 中加载更多较小的纹理与加载少量大纹理
- python - 熊猫不使用线性回归
- typescript - 如何在打字稿中对对象上的项目进行分组和计数?
- applescript - 在密码保护文件夹时陷入循环
- android - 运行所有协程类测试失败
- python - 错误:ValueError:应定义“密集”输入的最后一个维度。找到`无`