1

目前,我正在尝试创建一个类似于此的 3d 参数图:

可以在这里找到:http: //gnuplot.sourceforge.net/demo/surface1.html

这里有脚本:http: //gnuplot.sourceforge.net/demo/surface1.17.gnu

我的图表如下所示:

在此处输入图像描述

我正在使用这个:

set datafile separator ","
set parametric
x0 = 0 
x1 = 1
x2 = 2
splot 'January5.csv' u x0:1:3 with lines, 'test.csv' u x1:1:2 with lines

显然我的图表缺乏比较。我真的很喜欢第一个图表沿 x 轴绘制的能力。我一直在尝试复制这一点,但到目前为止一直失败。

4

1 回答 1

1

parametric如果您只想从文件中绘制原始数据,您实际上并不需要依赖。

xyz.txt使用看起来像嘈杂正弦时间序列的样本数据:

1 0 9.43483356296457
1 0.0204081632653061 10.2281885806631
1 0.0408163265306122 10.9377108185805
...
3 0.959183673469388 10.2733398482972
3 0.979591836734694 10.1662011241681
3 1 10.4628112585751

(第一列是编码 x 位置的整数值,第二和第三列是 y 和 z。我在最后附加了用于生成这些数据的 R 脚本。)

我会简单地使用

splot 'xyz.txt' using 1:2:3 with impulses

其中impulses从 z 的最小值开始绘制垂直线。您可以更改此行为;例如,如果你想从 z=0 开始,你可以使用

set zrange [-1:12]
set ticslevel 0
zmin = 0
zr(x) = (x==0 ? zmin : x)
splot 'xyz.txt' using 1:2:(zr($3)) with impulses

请注意,我对 y 使用了规则间隔的值,但这并不重要。

在此处输入图像描述

当然,其他变化也是可能的。也许带有一些衬线挂图的围栏图可能会提供进一步的帮助。


R脚本用于生成xyz.dat

n <- 50  # number of observation per sequence
k <- 3   # number of sequences
t <- seq(0, 1, length=n)  # sampling rate
xyz <- data.frame(x=rep(1:k, each=n), y=t, z=sin(2*pi*t*2.1)+.25*rnorm(n*k)+10)
write.table(xyz, file="xyz.txt", row.names=FALSE, col.names=FALSE)
于 2012-01-31T12:34:08.700 回答