【发布时间】:2011-12-13 10:26:44
【问题描述】:
我正在尝试使用 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}
]
其中 data 是矩阵,compounds 是一个变量,设置为模型化化合物的数量(此处为 1475)。 “compound” 是滑块的标签。 问题是,当几厘米浏览 1400 多个项目时,滑块移动得很快。 我试着用
做一个下拉菜单MenuView[
Table[
ListLogLogPlot[data[[All, {1, i}]],PlotLabel -> data[[1, i]]], {i, 2, compounds}
]
]
它也可以工作,但这是一个处理器杀手进程(在执行 16 个内核的 Xeon 16 核服务器上需要 10 多分钟),因为 Mathematica 会在显示任何绘图之前尝试绘制所有绘图。此外,下拉菜单没有名称,只有一系列数字(1 代表氢,1475 代表 C8H14N+,Grain-),尽管该图有名称。
我正在寻找一种仅按需绘制图形的方法,并在下拉列表中显示名称(如果需要,默认为 H)。或者我可以输入化合物名称的字段。这似乎可以通过 Dynamic[ ] 命令实现,但我无法使其正常工作。
谢谢
【问题讨论】:
-
20001 x 1476实际上是一个相当温和的矩阵大小。您应该能够在内存中很好地解决这个问题,而无需依赖数据库。
标签: dynamic matrix wolfram-mathematica plot