首页 > 解决方案 > 来自多个 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 语法。

有什么解决办法吗?请评论代码将不胜感激!

标签: plotgnuplot

解决方案


如果您的 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

推荐阅读