Plotting centroidEnergy vs. distanceInAir with Mathematica ListPlot

  • Context: Mathematica 
  • Thread starter Thread starter cepheid
  • Start date Start date
  • Tags Tags
    List Mathematica Plot
Click For Summary

Discussion Overview

The discussion revolves around plotting data in Mathematica, specifically the relationship between centroidEnergy and distanceInAir. Participants explore methods for creating a ListPlot and address issues related to data formatting and plot appearance.

Discussion Character

  • Technical explanation
  • Homework-related
  • Debate/contested

Main Points Raised

  • One participant describes their attempt to plot two lists in Mathematica and encounters an error when using the Transpose function due to mismatched list lengths.
  • Another participant suggests using the Thread function as an alternative to create ordered pairs from the two lists.
  • A participant reports success with the Thread function but raises concerns about the plot's axes intersecting at an unexpected point instead of (0,0).
  • The same participant questions why the y-axis does not extend below the last data point and expresses frustration with the plot's appearance.
  • Another participant recommends using the PlotRange option to potentially resolve the issue with the plot's y-axis.

Areas of Agreement / Disagreement

Participants do not reach a consensus on the best approach to resolve the plotting issues, and multiple suggestions are offered without agreement on a definitive solution.

Contextual Notes

Participants note issues related to data point omission and the behavior of the plot's axes, indicating potential limitations in the plotting commands used.

cepheid
Staff Emeritus
Science Advisor
Gold Member
Messages
5,197
Reaction score
38
This didn't generate any responses in the software thread, and since this is for a homework assignment, I have moved my query here. Thanks.

Hello:

I have entered data into two lists in Mathematica:

centroidEnergy = {1.3485, 1.4780,
1.6176, 1.7820, 1.9123, 2.0274, 2.1635, 2.3163, 2.4213, 2.5191, 2.6515, \
2.7490, 2.8763, 2.9894, 3.0728, 3.1949, 3.2816, 3.3923, 3.4773, 3.5884, \
3.6804, 3.7702, 3.8374, 3.9679, 4.0507, 4.1507, 4.2163, 4.3145, 4.4039, \
4.5056, 4.5089, 4.6440, 4.7331, 4.8497, 4.9290, 5.0019, 5.0862, 5.1815, \
5.2427, 5.3365, 5.4225, 5.4800}


and

distanceInAir = {2.0523, 2.0020,
1.9517, 1.8964, 1.8511, 1.8008, 1.7505, 1.7002, 1.6499, 1.5996,
1.5493, 1.4990, 1.4488, 1.3984, 1.3481, 1.2979, 1.2476, 1.1520,
1.0967, 1.0464, 0.99606, 0.95079,
0.89546, 0.84516, 0.79486, 0.74456, 0.69426, 0.64396, 0.59366,
0.54336, 0.49306, 0.44276, 0.39247, 0.34217, 0.29186, 0.24157,
0.19269, 0.14097, 0.090671, 0.040371, 0.000132}

I am trying to plot the former vs. the latter. The recommended method I have seen to do so is to Transpose the two lists so that M. creates a list of ordered pairs of corresponding items from each one. Then, ListPlot that. However, I can't get the following command to work: it always gives the ensuing error message:

dataToPlot = Transpose[{distanceInAir, centroidEnergy}]

Transpose :: nmtx :: the first two levels of the one-dimensional list {{2.0523, 2.0020, 1.9517, 1.8964, 1.8511, 1.8008, 1.7505, <<28>> , 0.24157, 0.19269, 0.14097, 0.090671, 0.040371, 0.000132}, {<<1>>}} cannot be transposed.

?

Any ideas on how to simply plot centroidEnergy vs. distanceInAir would be greatly appreciated! Thanks.
 
Last edited:
Physics news on Phys.org
Try the Thread[] function.

Thread[{{1, 2, 3}, {a, b, c}}]

returns

{{1, a}, {2, b}, {3, c}}

--J
 
Thanks! That actually worked...once I discovered that I had omitted a data point in one of the lists...so one was shorter than the other...grr. :smile:

Any idea why the resulting plot in Mathematica would have x and y axes intersecting at some stupid random point instead of at (0,0)?

Edit: When I set AxesOrigin -> {0,0}, the resulting y-axis has a huge gap in it! Why?

Edit2: from the look of things, it's refusing to draw the y-axis below the y-value of the last data point. That's ridiculous! Any idea how to get around it?
 
Last edited:
The PlotRange option might help.

ListPlot[{...}, PlotRange->{y0, yf}]

--J
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
8K
  • · Replies 1 ·
Replies
1
Views
2K