我有一组数据点,例如(这是一个例子)
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}]
由于
维尔吉利奥
答案 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)