2011-02-11 14 views
8

私はリストのリスト(行列)をmathematicaに持っています。私は大胆にすべての行の最大と、それをうまく印刷したいです。これを行う方法?mathematicaに行列を素早く出力する

さらに、このような最大値を超えた円でこれが可能ですか?

答えて

19

あなたはきれいに行列を印刷するMatrixFormを使用することができます。

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

data // MatrixForm 

利回り

MatrixForm image

を次のようにあなたは各行の最大値の周りに円を描くことができます。

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

matrix with circles

RoundingRadius -> 1000円を得るために途方もなく大きなパラメータを使用しています。ディスプレイのスケールに応じて定数を調整する必要があります。

Framed[m...]Style[m, Bold]と変更することができます。

+0

私は '#/ 'が好きです。 m:最大[#] - > ... '構成。 (+1) – Simon

8

グリッド[]は、表示の外観をきめ細かく制御します。たとえば、次のように

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>それはすべての最大の要素を強調するために、行ごとに1つだけの要素

編集

を強調表示します、あなたは、たとえば行うことができます:

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、最初の例では1つの要素だけが強調表示される理由を理解するのに少し時間がかかります。 – rcollyer

+0

@rcollyerその周りに謎はありません。 ** Ordering [l、-1] **は1つの要素のみを返します。 –

+2

ああ、そうです。 'MapIndexed'は' {row_num、first_max_pos} - > {Bold、Red} 'の形式の要素を持つリストを返します。 – rcollyer

関連する問題