2011-12-31 7 views
5

RowSpacings consente di modificare la spaziatura delle righe in una griglia.Qualsiasi sintassi breve per l'impostazione di RowSpacing solo per l'ultima riga in una griglia?

Aiuto dice:

RowSpacings->{Subscript[s, 12],Subscript[s, 23],...} can be used to specify 
different spacings between different rows. If there are more rows than 
entries in this list, then the last element of the list is used repeatedly 
for the remaining rows 

Avviso, dove si dice che i righe rimanenti sopra.

Quello che voglio è fare in modo che tutte le righe iniziali utilizzino una spaziatura, ma l'ultima riga per utilizzare una spaziatura diversa.

Questo esempio fa il modo documentato (righe rimanenti)

n = 5; 
data = Table[Random[], {n}, {n}]; 
Grid[data, Frame -> All, RowSpacings -> {6, 1}, Alignment -> Center] 

enter image description here

Ma volevo fare il contrario, cioè impostare l'ultima fila di qualcosa, e tutte le righe prima all'altra . Unico modo per farlo è la strada più lunga, cioè scrivendo tutte le distanze per tutte le righe fino a quando l'ultimo:

n = 5; 
data = Table[Random[], {n}, {n}]; 
Grid[data, Frame -> All, 
RowSpacings -> {Sequence @@ Table[1, {n - 2}], 6},Alignment -> Center] 

enter image description here

È possibile che questo è solo un altro modo di scrivere

Grid[data, Frame -> All, RowSpacings -> {1, 1, 1, 6}, Alignment -> Center] 

ho anche provato le cose come

Grid[data, Frame -> All, RowSpacings -> {{1}, 6}, Alignment -> Center] 
Grid[data, Frame -> All, RowSpacings -> {{1 ;; 3}, 6}, Alignment -> Center] 

ma non funzionano. Non sono riuscito a trovare una scorciatoia come nel primo esempio sopra.

Qualcuno sa un trucco per dire a RowSpacings di impostare solo l'ultima riga su un valore specifico, e tutte le righe fino ad un altro, senza l'uso del suddetto hack?

Questo non è un grosso problema in realtà, come ho fatto io, mi stavo solo chiedendo se sto trascurando uno di quegli accorgimenti di sintassi in Mathematica, questo è tutto.

grazie,

risposta

7

Dando per scontato che non si dispone di altre ragioni per usare RowSpacings + GridBox combinazione, utilizzando Spacings opzione per l'Grid

Grid[data, Spacings -> {Automatic, Dimensions[data][[1]] -> 6}, 
    Frame -> All, Alignment -> Center] 

dà quello che ti serve.

EDIT: Più convenientemente, Grid[data, Spacings -> {Automatic, -2-> 6}, Frame -> All, Alignment -> Center] dove -2 riferisce al penultimo elemento degli indici di riga che vanno da 1 a 1+number of rows

EDIT 2: Utilizzando GridBox, quanto segue produce lo stesso risultato:

GridBox[data, RowLines -> True, ColumnLines -> True, 
    GridFrame -> True, RowAlignments -> Center, 
    ColumnAlignments -> Center, 
    GridBoxSpacings -> {"RowsIndexed" -> {-2 -> 6}}] //DisplayForm 
+0

grazie. il trucco '-2-> 6' è quello che stavo cercando. – Nasser

Problemi correlati