Matrix gnuplot:用行名和列名标记矩阵(热图)的x轴和y轴

Matrix gnuplot:用行名和列名标记矩阵(热图)的x轴和y轴,matrix,label,gnuplot,Matrix,Label,Gnuplot,我是gnuplot的新手,在谷歌搜索后没有找到有效的解决方案 我有一个数据矩阵,看起来像这样: 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'矩阵和图像绘制热图,x轴标记为a-E,y轴标记为a-E。该矩阵并不总是具有相同的大小,但行数始终等于列数,并且总是标记 有人能帮我解决这个问题吗?我想我必须使用使用命令,但到目前为止,这对我来说似乎是完全的伏都教

我是gnuplot的新手,在谷歌搜索后没有找到有效的解决方案

我有一个数据矩阵,看起来像这样:

  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'矩阵和图像绘制热图
,x轴标记为a-E,y轴标记为a-E。该矩阵并不总是具有相同的大小,但行数始终等于列数,并且总是标记

有人能帮我解决这个问题吗?我想我必须使用
使用
命令,但到目前为止,这对我来说似乎是完全的伏都教


非常感谢

这一次实际上是一场灾难,如果没有一些*nix shell魔法,我无法实现它

首先,我们要获得x tic标签和y tic标签:

XTICS="`awk 'BEGIN{getline}{printf "%s ",$1}' test.dat`"
YTICS="`head -1 test.dat`"
此时,XTICS是字符串“fghij”,YTICS是字符串“abcde”

现在,我们想通过迭代设置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 )
我们使用了两个gnuplot内置函数(
word
words
)<代码>单词(字符串)
统计给定字符串中有多少单词(单词是由空格分隔的字符序列)
word(string,n)
返回字符串中的第n个单词

现在,我们可以绘制您的数据文件。。。唯一的问题是
matrix
想要使用数据文件中的所有行和列。通过使用
each
关键字,您可能可以减少实际读取的行/列,但我不知道如何在矩阵文件上做到这一点——我认为继续依赖shell实用程序(
awk
sed
)可能更容易


plot”好的,这个问题很老了,但是在gnuplot中已经有了一种更简单的实现方法:

plot 'result.csv' matrix rowheaders columnheaders with image

那里得到的,先生,你是我今天的英雄。非常感谢你!@zenbomb——没问题。对我来说,想弄明白这一点其实是一个很有趣的游戏。我不经常使用
矩阵
数据文件,所以这是一个很好的机会,让我在没有awk的情况下学习gnuplot.XTICS的新知识:XTICS=”
cut-d'-f1 test.dat | xargs
“滥用xargs将列转换为行。此外:选项
行标题
列标题
自版本5.0 patchlevel 0起可用。
plot 'result.csv' matrix rowheaders columnheaders with image