2014-06-16 4 views
2

gnuplot을 사용하여 히트 맵 그래프를 만들었습니다. 여기gnuplot 다른 열의 레이블 및 점수가 포함 된 히트 맵

enter image description here

내가 범위 1-20,30-39 있습니다

 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 

내 출력은 난은 data.dat이 ..., 100 이상) 이제 모든 축에서 2 개의 값을 가져야합니다. 예 : 정지 및 이용 가능 (181 및 20) 181은 카운트이고 20은 백분율입니다. 그래프의 백분율을 기반으로 그래프를 만들고 그래프의 데이터 수를 기준으로 레이블을 만듭니다.

저는 for를 사용하여 몇 가지 그래프를 만들고 데이터를 선택하기 위해 일부 모듈을 만들었습니다. 그러나 여기에서는 그래프를 생성 할 생각이 없습니다. 이 생성에 대한 제안? 감사!

답변

2

every을 사용하면 열을 건너 뛸 수 있습니다.

plot ... every 2은 레이블에 사용할 수있는 두 번째 열만 사용합니다. 색상은 두 번째 열 (번호가 1)부터 시작해야하며 every 2::1이 필요합니다.

이후에만 스크립트에 관련 변경됩니다 4.6.5와

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 

결과는 다음과 같습니다

enter image description here

+0

멋진 @christoph가. 감사합니다 모든 도움에 100 감사드립니다. – indi60