来自多个文件的Gnuplot热图

时间:2015-10-12 11:22:47

标签: gnuplot heatmap

我的数据如下:

2015-08-01 07:00    0.23    0.52    0.00    0.52    9   14.6    14.6 14.6   67  8.5 0.0 --- 0.00    0.0 --- 14.6    14.1    14.1    16.3    1016.2  0.00      0.0   156 0.22    156 0.0 0.00    0.0 0.003   0.000   23.9    39  9.1 23.4    0.05    23  1   100.0   1   1.8797836153192153  660.7143449269239

2015-08-01 07:01    0.25    0.53    0.00    0.53    0   14.6    14.6    14.6    67  8.5 0.0 --- 0.00    0.0 --- 14.6    14.1    14.1    16.3    1016.2  0.00    0.0 153 0.22    153 0.0 0.00    0.0 0.003   0.000   23.9    39  9.1 23.4    0.00    23  1   100.0   1   1.8894284951616422  657.3416264126714   105 73  121 163

2015-08-01 07:02    0.25    0.52    0.00    0.52    0   14.7    14.7    14.6    67  8.6 0.0 --- 0.00    0.0 --- 14.7    14.2    14.2    16.1    1016.2  0.00    0.0 139 0.20    139 0.0 0.00    0.0 0.003   0.000   23.9    39  9.1 23.4    0.00    24  1   100.0   1   1.8976360559992214  654.4985251906015

2015-08-01 07:03    0.26    0.53    0.00    0.53    0   14.7    14.7    14.7      67    8.6 0.0 --- 0.00    0.0 --- 14.7    14.2    14.2    16.1    1016.3  0.00    0.0 139 0.20    144 0.0 0.00    0.0 0.003   0.000   23.9    39  9.1 23.4    0.00    23  1   100.0   1   1.9047561611790007  652.0519661851259

2015-08-01 07:04    0.25    0.53    0.00    0.53    0   14.7    14.7    14.7    67  8.7 0.0 --- 0.00    0.0 --- 14.7    14.2    14.2    16.2    1016.3  0.00    0.0 141 0.20    141 0.0 0.00    0.0 0.003   0.000   23.9    39  9.1 23.4    0.00    24  1   100.0   1   1.903537153899393   652.4695341279602

2015-08-01 07:05    0.25    0.52    0.00    0.52    0   14.8    14.8    14.7    67  8.7 0.0 --- 0.00    0.0 --- 14.8    14.3    14.3    16.3    1016.3  0.00    0.0 148 0.21    148 0.0 0.00    0.0 0.002   0.000   23.9    39  9.1 23.4    0.00    23  1   100.0   1   1.897596925383499   654.5120216976508
 ........
 ........

我有多个文件看起来那样:所以我从2015-08-01,2015-06-05得到了数据,等等。

我想在第三行和第25行中绘制第43行:-)以某种热图样式来自一个图中的所有文件。那些是想要从每个文件中挑选出来的行:

0.23 156 660.7143449269239
0.25 153 660.7143449269239
0.25 139 654.4985251906015
0.26 139 652.0519661851259

我通过dgrid 3d得到了格式,到目前为止我的输出是: enter image description here

这是我的代码

set dgrid3d
set grid
set palette model HSV defined ( 0 0 1 1, 1 1 1 1 )
set pm3d map 
unset surf
set pm3d at b

splot "data_AIT_lvl1_20150604.csv" every ::121::600 using 3:25:43 lc    palette   title '{/Symbol l}average 20150604',\
"data1.csv" every ::121::361 using 3:25:43 lc palette title '{/Symbol l}average 20150605',\
"data2" every ::121::361 using 3:25:43 lc palette title '{/Symbol l}average 20150606',\
"data3.csv" every ::121::361 using 3:25:43 lc palette title '{/Symbol l}average 20150703',\
and so on for multple files

我喜欢输出,但我想知道是否有办法改善图中的重叠区域以更好地区分值?是否有一种gnuplot方法可以将我想要绘制的所有数据从每个文件绘制成一个大表,并将该表中的数据绘制成热图。我尝试了一些东西,但不知何故失去了我所有的尝试和错误步骤,所以我想也许你们中的一个可以帮我解决这个问题。

感谢您到目前为止的答案,我正在尽力指出我的第二个问题: 现在我在图表中绘制了多天的值,它看起来不错,但是有部分重叠,所以我无法看到图中所有日期的值(色调)。 根据我的经验,我倾向于过分复杂这样的问题所以我决定问一个问题是否有办法解决这个问题。 我想也许把所有的日子都放在一张大桌子上,所有的数据都画在一个层面上,这样我就得到了一张简单的彩色热图。 我尝试了Joces表解决方案,它完美无缺,但Joce是对的,它实际上并没有解决我的问题。 enter image description here

正如您所看到的那样,现在有大量数据,颜色不同,但您无法区分不同的日子。 Alos,第一张照片(左边的大紫色块和输入的橙色块之间)的间隙消失了,融化成一个大块。

所以我认为我想要问的是,是否还有另一种更好的方法可能是用轮廓来获得我想要的东西。

1 个答案:

答案 0 :(得分:1)

你要求的是

set table
set output "one_big_table"
splot "file1" using c1:c2:c3:..., \
      "file2" using C1:C2:C3:...., \
      ...
unset table

这将创建与文件一样多的块,因此我不确定您的最终目标是如此容易实现。但这是一个不同的问题。