kame - 4 months ago 11

Python Question

I want to plot some data. The first column contains the x-data. But matplotlib doesn't plot this. Where is my mistake?

`import numpy as np`

from numpy import cos

from scipy import *

from pylab import plot, show, ylim, yticks

from matplotlib import *

from pprint import pprint

n1 = 1.0

n2 = 1.5

#alpha, beta, intensity

data = [

[10, 22, 4.3],

[20, 42, 4.2],

[30, 62, 3.6],

[40, 83, 1.3],

[45, 102, 2.8],

[50, 123, 3.0],

[60, 143, 3.2],

[70, 163, 3.8],

]

for i in range(len(data)):

rhotang1 = (n1 * cos(data[i][0]) - n2 * cos(data[i][1]))

rhotang2 = (n1 * cos(data[i][0]) + n2 * cos(data[i][1]))

rhotang = rhotang1 / rhotang2

data[i].append(rhotang) #append 4th value

pprint(data)

x = data[:][0]

y1 = data[:][2]

y3 = data[:][3]

plot(x, y1, x, y3)

show()

EDIT: http://paste.pocoo.org/show/205534/

But it doesn't work.

Answer

```
x = data[:][0]
y1 = data[:][2]
y3 = data[:][3]
```

These lines don't do what you think.

First they take a slice of the array which is the whole array (that is, just a copy), then they pull out the 0th, 2nd or 3rd ROW from that array, not column.

You could try

```
x = [row[0] for row in x]
```

etc.

Source (Stackoverflow)

Comments