我使用 gnuplot 创建了热图。 我有数据.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 创建一些图表并进行一些取模来选择数据的经验。但在这里,我不知道创建该图表。对于创建这个有什么建议吗?谢谢!
最佳答案
您可以使用every
来跳过列。
plot ... every 2
仅使用每隔一列,这就是您可以用于标签的内容。对于颜色,您必须从第二列开始(以 1
编号),并且需要每 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 的结果是:
关于graph - 带有来自不同列数据的标签和分数的 gnuplot 热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24240236/