Eek*_*orn 7 label gnuplot matrix
我是gnuplot的新手,在google搜索后找不到合适的解决方案.
我有一个类似这样的数据矩阵:
  A B C D E
A 0 2 3 4 5
B 6 0 8 9 0
C 1 2 0 4 5
D 6 7 8 0 0
E 1 2 3 4 0
我想要做的是绘制热图plot 'result.csv' matrix with image,其中x轴标记为AE,y轴标记为AE.该矩阵并不总是具有相同的大小,但行的数量总是等于cols的数量,并且它总是被标记.
有人可以帮我解决这个问题吗?我想我必须使用这个using命令,但到目前为止,这对我来说似乎是完全的伏都教...
非常感谢!
mgi*_*son 12
这个实际上是一个doosie,如果没有一些*nix shell魔法,我无法实现.
首先,我们想要获得x tic标签和y tic标签:
XTICS="`awk 'BEGIN{getline}{printf "%s ",$1}' test.dat`"
YTICS="`head -1 test.dat`"
此时,XTICS是字符串"FGHI J",YTICS是字符串"ABCD E".
现在,我们想通过迭代设置xtics:
set for [i=1:words(XTICS)] xtics ( word(XTICS,i) i-1 )
set for [i=1:words(YTICS)] ytics ( word(YTICS,i) i-1 )
我们使用了2个gnuplot内置函数(word和words).  words(string)计算给定字符串中有多少单词(单词是由空格分隔的字符序列).  word(string,n)返回字符串中的第n个单词.
现在,我们可以绘制您的数据文件...唯一的问题是matrix想要使用数据文件中的所有行和列.您可以通过使用every关键字来减少实际读取的行/列,但我不知道如何在矩阵文件上执行此操作 - 我认为继续依赖shell实用程序可能更容易(awk和sed)
plot "<awk '{$1=\"\"}1' test.dat | sed '1 d'" matrix w image
#######^ replace the first field with nothing
################################## ^ delete first line
现在你的情节(希望)看起来像你想要的那样.
另请注意,由于我们使用了迭代,这个脚本只能在gnuplot 4.3或更高版本中运行 - 因为当前的稳定版本是4.6,所以希望这是好的.
小智 5
好的,这个问题很老了,但是已经在 gnuplot 中实现了一种更简单的方法:
plot 'result.csv' matrix rowheaders columnheaders with image
从http://gnuplot.sourceforge.net/demo/heatmaps.html得到它