How can I get my ListPlot to go from {x,-10,10} on x?

  • Mathematica
  • Thread starter Freya
  • Start date
  • #1
16
1
I have some code that is basically taking a range of energies, putting them into some recurrence equations and solving, and then I want to plot the results.

Code:
\[HBar] = 1;
m = 1;

Do[Energy[z] = 0.5 + 5 z, {z, 0, 14}]
Table[Energy[z], {z, 0, 14}];
Do[Entot[n, o] = Energy[o] - \[HBar]*\[Omega]*n, {n, -10, 10}, {o, 0, 
  14}]
Do[k[n, o] = 2*m*(Entot[n, o])^(1/2), {n, -10, 10}, {o, 0, 14}]
\[Omega] = 1;
s = 10;
k0 = 10;
\[Alpha] = 10;
t0 = 1;
t[-11] = 0.01;
t[11] = 0.01;
r[-11] = 0.01;
r[11] = 0.01;
ClearAll[plot1]
Do[eqn[n, o] = -t[n] + 
    KroneckerDelta[n, 
     1] + (s*m/(2*\[HBar]^2*I*k[n, o]))*(t[n - 1] + 
       t[n + 1]), {n, -10, 10}, {o, 0, 14}];
tab1 = Table[eqn[n, o], {o, 0, 14}, {n, -10, 10}];
tab2 = Table[t[n], {n, -10, 10}];

Do[plot1[p] = NSolve[tab1[[p]] == 0, tab2], {p, 1, 15}]
Do[f[n, o] = t[n] /. plot1[o], {n, -10, 10}, {o, 1, 15}]
ListPlot[Abs[
  Table[Flatten[Table[f[n, o], {n, -10, 10}]], {o, 1, 15}]], 
 PlotRange -> {0, 1.5}, PlotLegends -> Automatic]
At the moment, the ListPlot at the bottom takes the index of the list, so it goes from 0 to 21. But really, this should go from -10 to 10, following the iteration of n. I have tried everything it seems, from making my table go like [{n,f[n,o]},{n,-10,10}] but this doesn't work. I've tried making a separate list of n's and then transpose this with the f's, but as f is going over o as well, I think the length discontinuity is causing issues.

Any help would be much appreciated, and apologies if my code's a mess, I'm very much a rookie.

Thanks!
 

Answers and Replies

  • #2
12,088
5,763
Can you create list pairs? The examples I saw of listplot adjusted the x axis when list pairs were used.
 
  • #3
16
1
Can you create list pairs? The examples I saw of listplot adjusted the x axis when list pairs were used.
Thanks for your reply!

I tried that but due to my list being effectively a list with 21 elements, with 15 in each element, it can't be done simply it seems, I think I need some tricky syntax
 
  • #4
30,136
6,567
I have tried everything it seems, from making my table go like [{n,f[n,o]},{n,-10,10}]
This is the right way to do it. What error did you get when you tried this?

Try just one fixed value of o first.
 
  • #6
16
1
This is the right way to do it. What error did you get when you tried this?

Try just one fixed value of o first.
It doesn't get an error per say, but the graph it spits out is wrong, if I look at just one o I get a 2 sets of data plotted (or so it seems) one that's a straight line going from -10 to 10 in y (no idea why) and then roughly the right shape of the graph for f, but x now goes from 0 to 42.
 
  • #7
12,088
5,763
List pairs are:

(-3,9), (-2,4), (-1,1),(0,0), (1,1),(2,4),(3,9)...

ListPlot will then adjust the X-axis to match the axes to range of x values and the range of y values which in this case is
x: -3 to 3 and y:0 to 9
 
  • #8
16
1
List pairs are:

(-3,9), (-2,4), (-1,1),(0,0), (1,1),(2,4),(3,9)...

ListPlot will then adjust the X-axis to match the axes to range of x values and the range of y values which in this case is
x: -3 to 3 and y:0 to 9
I've been trying to do this but I think the issue is my code isn't quite {x1,y1},{x2,y2} etc, I have several values for each x
 
  • #9
30,136
6,567
It doesn't get an error per say, but the graph it spits out is wrong, if I look at just one o I get a 2 sets of data plotted (or so it seems) one that's a straight line going from -10 to 10 in y (no idea why) and then roughly the right shape of the graph for f, but x now goes from 0 to 42.
That sounds like your list has been transposed. So instead of {{x1,y1},{x2,y2},...} your list goes {{x1,x2,...},{y1,y2,...}}.
 
  • #10
16
1
That sounds like your list has been transposed. So instead of {{x1,y1},{x2,y2},...} your list goes {{x1,x2,...},{y1,y2,...}}.
I may be wrong, but I don't think that's my problem, I think it may be further back in my code as when I print values of f, they are already in a list, I'll play around and see what I can find
 
  • #11
30,136
6,567
It is easy enough to check. Just make a new variable and set it equal to the value sent to ListPlot. I bet it isn't shaped right.
 

Related Threads on How can I get my ListPlot to go from {x,-10,10} on x?

Replies
1
Views
5K
Replies
8
Views
5K
  • Last Post
Replies
2
Views
586
Replies
2
Views
3K
Replies
5
Views
5K
Replies
12
Views
3K
Replies
1
Views
1K
Replies
1
Views
2K
Top