Awk 当输入是由热图gnuplot中的符号组成的字符串时,打印Sprintf错误

Awk 当输入是由热图gnuplot中的符号组成的字符串时,打印Sprintf错误,awk,graph,printf,gnuplot,heatmap,Awk,Graph,Printf,Gnuplot,Heatmap,我正在用一个独特的数据集制作热图。数据集由一个符号组成。 下面是我的dataset 1q.txt的示例 one two three 2009 0/0 1 0/0 1 0/0 1 2010 0/0 1 0/0 1 0/0 1 2011 0/0 1 0/0 1 6/179.5 1

我正在用一个独特的数据集制作热图。数据集由一个符号组成。 下面是我的dataset 1q.txt的示例

            one         two         three   
2009        0/0    1    0/0    1    0/0      1      
2010        0/0    1    0/0    1    0/0      1      
2011        0/0    1    0/0    1    6/179.5  1  
2012        0/0    1    2/0.4  1    11/83.0  1
2013        7/0.8  1    7/21.3 1    17/268.5 1
2014        1/3.5  1    4/7.7  1    9/37.9   1
这是我的gnuplot脚本

set term pos eps font 20
unset colorbox
unset key
set nocbtics
set cblabel "Score" 
set cbtics scale 0
set cbrange [ 0.00000 : 110.00000 ] noreverse nowriteback
set palette defined ( 0.0 "#FFFFFF",\
                      1 "#FFCCCC",\
                      2 "#FF9999 ",\
                      3 "#FF6666")

set size 1, 0.5
set output '1q.eps'
YTICS="`awk 'BEGIN{getline}{printf "%s ",$1}' '1q.dat'`"
XTICS="`head -1 '1q.dat'`"
set for [i=1:words(XTICS)] xtics ( word(XTICS,i) i-1 )
set for [i=1:words(YTICS)] ytics ( word(YTICS,i) i-1 )

set for [i=1:words(XTICS)] xtics ( word(XTICS,i) 2*i-1 )
plot "<awk '{$1=\"\"}1' '1q.dat' | sed '1 d'" matrix every 2::1 w image, \
     '' matrix using ($1+1):2:(sprintf('%.f', $3)) every 2 with labels
设置术语pos eps font 20
未设置色盒
取消设置键
设置nocbtics
设置“分数”标签
将cbtics比例设置为0
将cbrange[0.00000:110.00000]noreverse设置为立即返回
设置已定义的调色板(0.0“#FFFFFF”\
1“#FFCCCC”\
2“#FF9999”\
3“#FF6666”)
设置大小1,0.5
设置输出“1q.eps”
YTICS=“`awk'开始{getline}{printf”%s',$1}''1q.dat'`”
XTICS=“`head-1'1q.dat'`”
设置为[i=1:words(XTICS)]XTICS(word(XTICS,i)i-1)
设置为[i=1:words(YTICS)]YTICS(word(YTICS,i)i-1)
设置为[i=1:words(XTICS)]XTICS(word(XTICS,i)2*i-1)
“情节”


如何使热图显示类似“1/3.5”的标签,并基于整数显示颜色。

根本不需要使用
sprintf
。只需使用
stringcolumn
即可获得保存在数据文件中的列的原始内容:

plot "<awk '{$1=\"\"}1' '1q.dat' | sed '1 d'" matrix every 2::1 w image, \
 '' matrix using ($1+1):2:(stringcolumn(3)) every 2 with labels

plot“Hi@Christoph,将其更改为stringcolumn。。我发现从无效上下文调用的错误`stringcolumn()`。。将“带标签”指向最后一个代码的第二行时出错。你知道这是什么意思吗?好像
stringcolumn
不能与
matrix
一起工作,很抱歉,谢谢你提供的信息。所以解决这个问题的唯一方法是使用sprinf?否,因为
sprintf
只在后面出现,所以您仍然需要一种方法来获取列的字符串内容。您需要更改数据文件,但在这种情况下,您必须更改ytics和xtics的保存方式。好的,我只是再次访问。。。我将尝试更新ytics和xtics。。也许我可以使用awk和seed来获取字符串内容。。但仍然不知道如何在热图中显示它