2013-10-05 11 views
12

Voglio tracciare una matrice 18x18 con gnuplot. Ecco i miei codici:Matrice Gnuplot Matrice 2D con immagine, desidera disegnare i bordi per ogni cella

set size ratio 1 
set palette gray negative 
set xrange[-0.5:17.5] 
set yrange[-0.5:17.5] 
set cbrange[-0.2:0.8] 
set xtics 0,1,17 
set ytics 0,1,17 
set xtics offset -0.5,0 
set title "Resolusition Matrix for E" 
plot "Mat" matrix w image noti 

Poi ho avuto un fico come questo:

enter image description here

Ora vorrei aggiungere bordi a ciascuna cella, che sarà simile a questa:

enter image description here

Grazie.

risposta

13

Per il vostro caso è possibile impostare una tic minore, che poi si trova al confine tra due pixel, e disegnare una griglia su di loro:

set size ratio 1 
set palette gray negative 
set autoscale xfix 
set autoscale yfix 
set xtics 1 
set ytics 1 
set title "Resolution Matrix for E" 

set tics scale 0,0.001 
set mxtics 2 
set mytics 2 
set grid front mxtics mytics lw 1.5 lt -1 lc rgb 'white' 
plot "Mat" matrix w image noti 

nota, che set grid front porta anche i tic al fronte. Per evitare che sia possibile ridimensionare i tic su 0. Per i tic minori è necessario utilizzare un numero molto piccolo, 0 omettere le linee della griglia sui tic secondari.

Il risultato con 4.6.3 è:

enter image description here

EDIT: Per controllare le linee della griglia e le etichette di graduazione indipendente, è possibile utilizzare la inutilizzato x2 e y2 per disegnare la griglia (ispirato una risposta a How do I draw a vertical line in gnuplot?):

set size ratio 1 
set palette gray negative 
# grid lines 
set x2tics 1 format '' scale 0,0.001 
set y2tics 1 format '' scale 0,0.001 
set mx2tics 2 
set my2tics 2 

# labeling 
set xtics 5 out nomirror 
set ytics 5 out nomirror 

set grid front mx2tics my2tics lw 1.5 lt -1 lc rgb 'white' 

set xrange[-0.5:39.5] 
set yrange[-0.5:39.5] 
set x2range[-0.5:39.5] 
set y2range[-0.5:39.5] 

plot "Mat" matrix w image notitle 

Con gnuplot versione 4.6, questo richiede l'impostazione degli intervalli esplicite, in modo che il x e 0.123.721,12 mila(non usati!) Sono uguali. L'informazione potrebbe essere estratta con stats dal file di dati.

L'utilizzo della versione 5 consente di utilizzare set link. Invece di tutto il materiale set *range. È possibile utilizzare:

set autoscale fix 
set link x 
set link y 

Risultato:

enter image description here

+0

impressionanti, buoni commenti! Grazie Christoph! – Kai

+0

Ora ecco un altro problema. Ho una matrice più grande 80x80, l'etichetta sembra molto occupata. Voglio evitare i numeri sotto i tic ma mantenere i tic stessi per mostrare la griglia. – Kai

+0

Io uso 'set formato y" "' rimosso. – Kai