我使用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
我的输出是:
这里我的范围是1-20,30-39,......,100或更多) 现在我必须在每个轴上有2个值。例如停止和利用(181和20)。 181是计数,20是百分比。我想根据数据的数量创建具有基于百分比的颜色的图形和图表上的标签。
我有经验使用for创建一些图形并做一些模数来选择数据。但在这里,我不知道创建那些图表。有什么建议吗?谢谢!
答案 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的结果是: