# Plot or Integrate one vector of data points vs another vector

I have two column vectors y and x full of data points, they are of the same size. Is it possible to plot the column vector y against the column vector x? Is it possible to integrate y against x?

## 2 Answers

Let's say we have the following data (sampled Sine function):

n = 30;
x = Table[t, {t, 0, 4 π, π/10}];
y = N[Sin[x]];


y against x can be plotted with ListPlot and Transpose can be used to create a list of {xi, yi} coordinates

ListPlot[Transpose[{x, y}], Joined -> True, Mesh -> All]


The integration depends of the above data can be done - for example - with the trapezoidal rule. Assuming {x1, y1} and {x2, y2} are two successive points, the area of the trapezoid is:

TrapezoidArea[{{x1_, y1_}, {x2_, y2_}}] := (y1 + y2)/2/(x2 - x1)


All we need is to create point pairs with Partition, Map (/@) the above function and use Total to get the result:

pointPairs = Partition[Transpose[{x, y}], 2, 1];
Total[TrapezoidArea /@ pointPairs]


As you can imagine, the result will be 0.

Of course, the above can be done in a single function:

TrapezoidalIntegrate[x_List, y_List] :=
(#[[1, 2]] + #[[2, 2]])/2/(#[[2, 1]] - #[[1, 1]])& /@
Partition[Transpose[{x, y}], 2, 1] // Total

 data = MapThread[List,{Data,xData}]
line = Fit[data, {1, x}, x]