Gnuplot 2D图转换为3D栅栏图

3
我有一个看起来像这样的情节:

http://www.abload.de/img/selection001yplp.png

不过,线条重叠得非常厉害,我无法看到足够多的内容。我的gnuplot脚本如下:
    set autoscale
    set term pdfcairo font ",4"
    set output "plot.pdf"
    set xdata time
    set format x "%H:%M"
    set timefmt "%s"
    set yrange [0:550]
    plot "file.dat" every 150 using 3:4 title '' with lines, \
         "file.dat" every 150 using 3:5 title '' with lines, \
         "file.dat" every 150 using 3:6 title '' with lines, \
         "file.dat" every 150 using 3:7 title '' with lines, \
         "file.dat" every 150 using 3:8 title '' with lines, \
         "file.dat" every 150 using 3:9 title '' with lines, \
         "file.dat" every 150 using 3:10 title '' with lines, \
         "file.dat" every 150 using 3:11 title '' with lines

相应的file.dat如下所示:

(.........)
6 1303238171 0 134.332413 140.304581 138.496323 134.021835 105.546227 107.943008 102.812347 109.098152 972.554886
7 1303238171 0 134.232849 140.35408 138.186279 132.489319 105.941231 108.020004 103.009338 109.75119 971.98429
8 1303238171 0 135.125488 138.125427 138.100098 132.543625 106.153214 107.507042 102.338707 125.25383 985.147431
9 1303238171 0 134.341904 139.913376 138.070648 132.368164 106.214211 108.506859 102.963211 155.246277 1017.62465
10 1303238171 1 134.163055 140.042313 139.231033 132.444244 106.161438 108.850807 103.753929 162.19162 1026.838439
11 1303238171 1 134.179016 140.187561 138.68425 132.572876 107.169006 107.507057 102.974937 120.698692 983.973395
12 1303238171 1 134.40593 140.569382 138.604828 139.589264 106.631699 108.092957 103.634117 108.943863 980.47204
13 1303238172 1 134.353363 138.062759 138.344818 140.665985 107.538544 108.983582 104.300827 175.732117 1047.981995
14 1303238172 1 135.190887 140.411484 138.174591 133.823929 105.412224 108.240623 102.790154 120.459106 984.502998
(.........)

有没有一种简单的方法,可以让这个图表看起来像gnuplot示例页面上的栅栏图?我查看了它,似乎非常复杂。我希望能够轻松添加第三个维度,而不必更改file.dat。你们知道如何实现这一点吗?或者你们有什么其他想法,如何使这个图表更易读?
最好的问候,
1个回答

2
也许我没有正确理解你的问题。但是由于您在x轴上绘制时间,因此将其制成3D图表似乎很尴尬,因为时间仅是一维值。如果您正在处理表面(2D数据),则通常会使用3D图形,其中对温度,压力甚至时间进行绘制(至少是1D数据)。
为了使图表更易读,并根据您的数据情况,可能需要使用多个图表来减轻负担。然后,您可以将数据分组到几个图表中,从而可以设置y轴的新范围?!
如果我可以指出脚本的一些简化:
请使用迭代功能,如下所示:
plot for [i=4:11] "file.dat" every 150 using 3:i title '' with lines

为了让那行文字更加简洁:

plot for [i=4:11] "file.dat" every 150 u 3:i t '' w l

如果您不想在图表中显示图例:

set key off
plot for [i=4:11] "file.dat" every 150 u 3:i w l

请注意,我没有测试上面的几行代码,所以可能会有一些拼写错误^^。


谢谢您的回复!我不想绘制一个表面,我只想使用类似于这个示例页面中的栅栏图来分离“线”:http://gnuplot.sourceforge.net/demo/surface1.html(页面的最后三分之一...)。然后x轴数据将是1-8之类的东西,时间将是y轴,而z则是另一个轴。 - imbaer
个人而言,我认为您的图表不需要使用“栅栏风格”。在我看来,您仍然需要一些二维数据,随着时间的推移进行绘制(这就是第三个维度)。即使您以这种方式绘制它,您的某些图表仍将重叠并导致外观华丽但信息内容较差的图表。为什么不试试呢?利用您链接中的教程,看看您能得到什么,以及是否想要保留它!? - Woltan
我花了很多时间研究这个问题,最终得出了您预测的结论:栅栏图可能看起来更漂亮,但代价是失去了信息(因为图形重叠)。因此,我决定拆分数据并制作多个子图。 - imbaer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接