красиво распечатать матрицу в Mathematica - PullRequest
8 голосов
/ 11 февраля 2011

У меня есть список списков (матрица) в Mathematica. Я хочу распечатать это красиво, с максимумом в каждом ряду жирным шрифтом. Как это сделать?

Или, может быть, даже дальше, с кругом вне такого максимума, возможно ли это?

Ответы [ 2 ]

19 голосов
/ 11 февраля 2011

Вы можете использовать MatrixForm, чтобы красиво распечатать матрицы:

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

data // MatrixForm

выходы

MatrixForm image

Вы можете нарисовать круг вокруг максимума в каждом ряду следующим образом:

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

* 1013 получая *

matrix with circles

RoundingRadius -> 1000 использует смехотворно большой параметр, чтобы получить круги. Возможно, вам придется настроить константу в зависимости от масштаба вашего дисплея.

Вы можете изменить Framed[m...] на Style[m, Bold], если предпочитаете полужирный шрифт.

8 голосов
/ 11 февраля 2011

Сетка [] обеспечивает точную настройку зернистости на дисплее. Например:

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

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

enter image description here

NB> В строке будет выделен только один элемент

Редактировать

Чтобы выделить каждый элемент max, вы можете сделать, например:

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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...