使用ListPlot Mathematica绘制数据集数组

使用ListPlot Mathematica绘制数据集数组,plot,wolfram-mathematica,Plot,Wolfram Mathematica,我有一组数据点,例如(这是一个示例) 现在我可以用ListPlot将这些数据绘制为 ListPlot[Transpose[{x,data[[1]]}]] 如果我想画不止一个我可以做 ListPlot[{Transpose[{x, data[[1]]}], Transpose[{x, data[[2]]}]}] 但是,考虑到val在程序中之前已经计算过,我如何在一行代码中绘制所有这些值呢 有没有办法做类似的事情 For[i = 1, i < val + 1, i++, ListPl

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

现在我可以用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和子列表使用转置,以便告诉您您的函数,您就快到了。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,你会一次又一次地使用这个想法。

因为你给出的例子中,最干净的方法是使用
DataRange

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

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


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

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...
data = {{1, 5, 6, 8}, {9, 7, 1, 3}, {3, 4, 5, 6}, {2, 2, 4, 6}};

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