将多个 y 值列表与单个 x 值列表配对
pair multiple y-value lists with a single x-value list
我有多个列表,每个列表对应于某些物种在某些模拟化学反应的 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 种化学物质。
有什么想法吗?谢谢!
按理解重述您的代码:
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]
一次处理所有元素系列:
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]
我有多个列表,每个列表对应于某些物种在某些模拟化学反应的 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 种化学物质。
有什么想法吗?谢谢!
按理解重述您的代码:
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]
一次处理所有元素系列:
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]