2011-02-11 16 views
8

Tengo una lista de listas (matriz) en mathematica. Quiero imprimirlo bien, con el máximo en cada fila en negrita. ¿Como hacer esto?muy bien imprimir una matriz en mathematica

O tal vez incluso más, con un círculo fuera de ese máximo, ¿es esto posible?

Respuesta

19

Puede utilizar MatrixForm imprimir matrices muy bien:

data = RandomInteger[100, {5, 5}]; 

data // MatrixForm 

produce

MatrixForm image

se puede dibujar un círculo alrededor del máximo en cada fila de la siguiente manera:

Map[# /. m : Max[#] :> Framed[m, RoundingRadius -> 1000] &, data] // 
    MatrixForm 

rindiendo

matrix with circles

RoundingRadius -> 1000 utiliza un ridículamente grande de parámetros para obtener círculos. Es posible que necesite ajustar la constante según la escala de su pantalla.

Puede cambiar Framed[m...] con Style[m, Bold] si prefiere doblar.

+0

Me gusta el '# /. m: Max [#] -> ... 'construcción. (+1) – Simon

8

La rejilla [] le proporciona control de grano fino en la apariencia de la pantalla. Por ejemplo:

g[a_] := Grid[a, 
    Background -> {None, {{LightBlue, LightRed}}}, 
    Dividers -> {False, All}, 
    ItemStyle -> {Automatic, Automatic, 
    MapIndexed[[email protected]{#2, Ordering[#1, -1]} -> {Bold, Red} &, a]}] 

g[RandomInteger[100, {10, 7}]] 

enter image description here

NB> Se va a poner de relieve sólo un elemento por fila

Editar

Para resaltar cada elemento máximo, se puede hacer, por ejemplo:

g[a_] := Grid[a, 
    Background -> {None, {{LightBlue, LightRed}}}, 
    Dividers -> {False, All}, 
    ItemStyle -> {Automatic, Automatic, 
    Flatten[Tuples[{[email protected]#, [email protected]#}] & /@ 
     MapIndexed[{#2, Position[#1, Max[#1]]} &, a], 
     1] /. {q_, {r_}} -> ({q, r} -> {Red, Bold})}] 

enter image description here

+0

+1, me va a llevar un poco de tiempo descubrir por qué su primer ejemplo solo destaca el elemento uno. – rcollyer

+0

@rcollyer No hay misterio alrededor de eso. ** Ordenar [l, -1] ** devuelve solo un elemento. –

+2

ah, ya veo. 'MapIndexed' devuelve una lista con elementos de la forma' {row_num, first_max_pos} -> {Bold, Red} '. – rcollyer

Cuestiones relacionadas