Я пытаюсь динамически построить данные, содержащиеся в матрице с помощью Mathematica 7. Данные содержатся в ней вот так, полученные с помощью химической модели.
[year H He Li C ... C8H14+,Grain- ]
[0 0 0.03 0.009 1E-3 ... 0 ]
[100 .1 0.03 0.009 1E-3 ... 0 ]
[200 .2 0.03 0.009 1E-3 ... 0 ]
[300 .2 0.03 0.009 1E-3 ... 0 ]
[... ... ... ... ... ... ... ]
[1E6 .5 0.03 0.003 1E-8 ... 1E-25 ]
По правде говоря, размеры матрицы составляют 2001 * 1476 (2000 шагов и первая строка для имени и 1475 соединений + 1 столбец для года), что очень тяжело. Я пытаюсь построить график для любого соединения с графиком «концентрация / год».Это работает
Manipulate[
ListLogLogPlot[data[[All, {1, i}]], PlotLabel -> data[[1, i]] ],
{{i, 2, "Compound"}, 2, compounds, 1}
]
, где данные - матрица, а соединения - переменная, установленная на количество смоделированных соединений (здесь 1475). «составной» - метка для ползунка. Проблема в том, что ползунок перемещается очень быстро, когда несколько сантиметров просматривают более 1400 элементов. Я попытался создать раскрывающееся меню с помощью
MenuView[
Table[
ListLogLogPlot[data[[All, {1, i}]],PlotLabel -> data[[1, i]]], {i, 2, compounds}
]
]
. Он также работает, но это процесс убийцы процессора (10+ минут на 16-ядерном сервере Xeon, выполняющем 16 ядер), поскольку Mathematica пытается построить все графики перед отображением любых из них. Кроме того, у раскрывающегося списка нет названия, только ряд чисел (от 1 для водорода до 1475 для C8H14N +, Grain-), хотя у графика есть название.
Я ищу способ построить график только по запросу с отображением имени в раскрывающемся списке (и, если требуется, H по умолчанию). ИЛИ поле, в котором я могу ввести название соединения. Кажется, это возможно с помощью команды Dynamic [] , но мне не удается заставить ее работать должным образом.
Спасибо