gnuplot热图,带有来自不同列数据的标签和分数

时间:2014-06-16 09:15:41

标签: graph gnuplot heatmap

我使用gnuplot创建了热图图表。 我有data.dat:

       avail    reli    perf    
stop    181 20  121 10  34 20
jitter  18 20   17 20   13 20
limp    12 20   5 30    20 20

和gnuplot脚本:

set term pos eps font 20
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",\
                      20.2 "#FF9999 ",\
                      30.3 "#FF6666",\
                      40.4 "#FF3333",\
                      50.5 "#FF0000",\
                      60.6 "#CC0000",\
                      70.7 "#C00000",\
                      80.8 "#B00000",\
                      90.9 "#990000",\
                      100.0 "#A00000")

set title "Faults"

set ylabel "Hardware Faults"
set xlabel "Aspects"
set size 1, 0.5
set output 'c11.eps'
YTICS="`awk 'BEGIN{getline}{printf "%s ",$1}' 'data2.dat'`"
XTICS="`head -1 'data2.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 )

plot "<awk '{$1=\"\"}1' 'data2.dat' | sed '1 d'" matrix w image, '' matrix using 1:2:($3==0 ? " " : sprintf("%.1d",$3)) with labels
#######^ replace the first field with nothing
################################## ^ delete first line

我的输出是:

enter image description here

这里我的范围是1-20,30-39,......,100或更多) 现在我必须在每个轴上有2个值。例如停止和利用(181和20)。 181是计数,20是百分比。我想根据数据的数量创建具有基于百分比的颜色的图形和图表上的标签。

我有经验使用for创建一些图形并做一些模数来选择数据。但在这里,我不知道创建那些图表。有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用every跳过列。

plot ... every 2仅使用每隔一列,这是您可以用于标签的内容。对于颜色,您必须从第二列开始(使用1编号),并且您需要every 2::1

以下是仅对您的脚本进行的相关更改:

set for [i=1:words(XTICS)] xtics ( word(XTICS,i) 2*i-1 )
plot "<awk '{$1=\"\"}1' 'data2.dat' | sed '1 d'" matrix every 2::1 w image, \
     '' matrix using ($1+1):2:(sprintf('%d', $3)) every 2 with labels

4.6.5的结果是:

enter image description here