31
$\begingroup$

I have two lists of values

xx = {0.1, 0.3, 0.35, 0.57, 0.88, 1.0}
yy = {1.2, 3.5, 4.5, 7.8, 9.0, 12.2}

I want to make a scatter plot (list plot) with xx as x axis and yy as y axis. The help document on ListPlot tells me I have to use

ListPlot[{{x1, y1}, {x2, y2}, ...}]

How do I create something like

ListPlot[{{0.1, 1.2}, {0.3, 3.5}, ...}]

from xx and yy? Thank you.

$\endgroup$
2
  • 1
    $\begingroup$ Change square brackets [...] to braces {...} in the definitions of xx and yy. Check the documentation for Transpose and/or Thread $\endgroup$
    – kglr
    Commented Mar 23, 2013 at 1:42
  • $\begingroup$ @kguler Thank you. $\endgroup$
    – JACKY88
    Commented Mar 23, 2013 at 2:16

2 Answers 2

46
$\begingroup$

First off, your syntax is incorrect; you need to use braces to define your lists:

xx = {0.1, 0.3, 0.35, 0.57, 0.88, 1.0};
yy = {1.2, 3.5, 4.5, 7.8, 9.0, 12.2};

You can then create a 2x6 matrix from xx and yy, and transpose it to get a 6x2 matrix of pairs, which is the correct format:

data = Transpose@{xx, yy};
ListPlot[data]

Mathematica graphics

$\endgroup$
3
  • $\begingroup$ Great, Thank you. BTW: why did you write Transpose@{xx, yy} instead of Transpose[{xx, yy}]? $\endgroup$
    – JACKY88
    Commented Mar 23, 2013 at 2:15
  • $\begingroup$ @PatrickLi, because they mean exactly the same thing. Look up Prefix in the documentation center. $\endgroup$
    – RunnyKine
    Commented Mar 23, 2013 at 2:24
  • $\begingroup$ @RunnyKine Got it. Thank you. $\endgroup$
    – JACKY88
    Commented Mar 23, 2013 at 2:27
17
$\begingroup$

If you have

xx = {0.1, 0.3, 0.35, 0.57, 0.88, 1.0}
yy = {1.2, 3.5, 4.5, 7.8, 9.0, 12.2}

you can do

Thread[{xx, yy}]

which gives

{{0.1, 1.2}, {0.3, 3.5}, {0.35, 4.5}, {0.57, 7.8}, {0.88, 9.}, {1., 
  12.2}}

and then

ListPlot[{{0.1`, 1.2`}, {0.3`, 3.5`}, {0.35`, 4.5`}, {0.57`, 
   7.8`}, {0.88`, 9.`}, {1.`, 12.2`}}]

enter image description here

So

ListPlot[Thread[{xx, yy}]]

is the answer.

Kind regards

$\endgroup$
2
  • $\begingroup$ Your answer is not wrong, and thank you for contributing. But, how is it different from the other, accepted answer? $\endgroup$ Commented Apr 26, 2014 at 23:19
  • 5
    $\begingroup$ I used Thread instead of Transpose. So you are right, when you say, the result is exactly the same. It's just a little different solution. $\endgroup$
    – Gab
    Commented Apr 26, 2014 at 23:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.