将多个y值列表与单个x值列表配对

时间:2015-07-24 20:13:02

标签: list tuples wolfram-mathematica

我有多个列表,每个列表对应于某些物种的化学浓度超过49个时间步骤的某些模拟化学反应。我还列出了这49个时间步长中的每一个的系统温度值。我试图在y轴上绘制所有这些化学物质列表(其中有19个),再次将温度作为x轴。但是我无法弄清楚如何一次一个地对抗温度。如果我使用任意x轴,我一次只能绘制多个。到目前为止,我有:

runstats = Import["file.csv"]
t = runstats[[1, All]]

element = Import["file.csv"]
e = element[[#, 2 ;; -1]] &
f = element[[#, 1]] &

t是温度,e是所有49个元素值的列表,f是与特定值相关联的物种名称。

所以要绘制它们,我用。

a = MapThread[{#, #2} &, {t, e[1]}]
ListLinePlot[a]

这正确地绘制了e的一个值。但是,我无法将范围[1;;19]插入e[1;;19],以绘制所有19种化学物质。

有什么想法?谢谢!

1 个答案:

答案 0 :(得分:0)

按照理解重新编写代码:

t = {3, 4, 6, 8};(* Temps *)
element = {
  {2, 3, 4, 5, 6},
  {3, 4, 5, 6, 7},
  {4, 5, 6, 7, 8}};

e = element[[#, 2 ;; -1]] &;
f = element[[#, 1]] &;

e[1](* first series of element values at temps *)
  

{3,4,5,6}

a = MapThread[{#, #2} &, {t, e[1]}]
  

{{3,3},{4,4},{6,5},{8,6}}

ListLinePlot[a]

enter image description here

一次处理所有元素系列:

a = MapThread[Transpose[{#, #2}] &,
  {ConstantArray[t, Length[element]], Rest /@ element}];

len = Length[element];
a = MapThread[Transpose[{#, #2}] &,
  {ConstantArray[t, len], e /@ Range[len]}];

ListLinePlot[a]

enter image description here