2011-12-31 30 views
5

RowSpacings cho phép một thay đổi khoảng cách hàng trong lưới.Bất kỳ cú pháp ngắn nào để đặt RowSpacing chỉ cho hàng cuối cùng trong lưới?

Help nói:

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 

Thông báo, nơi nó nói hàng còn lại trên.

Điều tôi muốn là làm cho tất cả các hàng bắt đầu sử dụng khoảng cách nào đó, nhưng hàng cuối cùng để sử dụng khoảng cách khác nhau.

Ví dụ này không cách tài liệu (các hàng còn lại)

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

enter image description here

Nhưng tôi muốn làm điều ngược lại, tức là đặt hàng cuối cùng để một cái gì đó, và tất cả các hàng trước khi nó khác . Chỉ cách tôi có thể làm điều đó là chặng đường dài, tức là bằng cách viết xuống tất cả các spacings cho tất cả các hàng cho đến khi cuối cùng một:

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

enter image description here

Trên đây chỉ là một cách khác để viết

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

tôi cũng đã cố gắng những thứ như

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

nhưng họ không làm việc. Tôi không thể tìm thấy một vết cắt ngắn như trong ví dụ đầu tiên ở trên.

Bất kỳ ai biết một mẹo để yêu cầu RowSpacings chỉ đặt hàng cuối cùng cho một số giá trị cụ thể và tất cả các hàng cho đến một số khác, mà không sử dụng hack ở trên?

Đây không phải là một việc lớn thực sự để làm điều đó như tôi đã làm, tôi chỉ tự hỏi nếu tôi nhìn vào một trong những sử dụng cú pháp lừa trong Mathematica, đó là tất cả.

cảm ơn,

Trả lời

7

Giả sử bạn không có lý do khác để sử dụng RowSpacings + GridBox kết hợp, sử dụng Spacings lựa chọn cho Grid

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

cho những gì bạn cần.

EDIT: thuận tiện hơn, Grid[data, Spacings -> {Automatic, -2-> 6}, Frame -> All, Alignment -> Center] nơi -2 đề cập đến lần thứ hai từ yếu tố cuối cùng của các chỉ số hàng đó đi 1-1+number of rows

EDIT 2: Sử dụng GridBox, sau đây tạo ra cùng một kết quả:

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

cảm ơn. thủ thuật '-2-> 6' là thứ tôi đang tìm kiếm. – Nasser

Các vấn đề liên quan