使用ListPlot Mathematica绘制数据集数组

时间:2014-02-18 16:40:59

标签: plot wolfram-mathematica

我有一组数据点,例如(这是一个例子)

 val=4; (*this value is calculated before in the program, so it not known a priori*)
 x={0,1,2,3};
 data=Table[0, {val}];
 data[[1]] = {1,5,6,8};
 data[[2]] = {9,7,1,3};
 data[[3]] = {3,4,5,6};
 data[[4]] = {2,2,4,6};

现在我可以使用ListPlot将每个数据绘制为

 ListPlot[Transpose[{x,data[[1]]}]]

如果我想绘制多个我可以做的

 ListPlot[{Transpose[{x, data[[1]]}], Transpose[{x, data[[2]]}]}]

但是我怎么能在一个代码单行中绘制所有这些,通过考虑在程序之前计算val?

有没有办法做类似

的事情
 For[i = 1, i < val + 1, i++, ListPlot[Transpose[{x,data[i]}]]......]

有一张包含所有x-y曲线的图表?

确实,我想要一张

的静态图片
 Manipulate[ListPlot[Transpose[{x, data[[i]]}]], {i, 1, val,1}]

由于

维尔吉利奥

2 个答案:

答案 0 :(得分:1)

你想对列表的每个元素“做同样的事情”。这应该告诉你考虑使用Map。您的列表是命名数据,每个元素都是您的四元素子列表。如果您查看Map的帮助页面,则表明您需要考虑一个功能,该功能可以执行您需要对每个子列表执行的操作。你已经知道你需要使用Transpose with x和你的子列表,以便告诉你你的功能,你几乎就在那里。 Map的结果将是所有这些结果的列表。所以

In[1]:= x = {0, 1, 2, 3};
data = {{1, 5, 6, 8}, {9, 7, 1, 3}, {3, 4, 5, 6}, {2, 2, 4, 6}};
ListPlot[Map[Transpose[{x, #}] &, data], Joined -> True]

Out[3]= ...FourOverlaidPlotsSnipped...

一次完成一个单词,直到你真正理解为了能够写出来而做出的思考。如果你继续使用Mathematica,你会一次又一次地使用这个想法。

答案 1 :(得分:0)

对于示例,您提供最干净的方法是使用DataRange

data = {{1, 5, 6, 8}, {9, 7, 1, 3}, {3, 4, 5, 6}, {2, 2, 4, 6}};

ListLinePlot[data, DataRange -> {0, 3}]

enter image description here


请在专门的 Mathematica StackExchange网站上询问您未来的问题:

enter image description here