Cześć.
Dopiero od dwóch dni piszę w pythonie. Mam problem z biblioteką matplotlib do tworzenia wykresów.
Używając list jako argumentów x,y,z dla funkcji rysującej wykres punktowy, wykres rysuje się poprawnie. Niestety nie mogę narysować wykresu wireframe ani innych ponieważ lista nie ma atrybutu ndim a taki jest warunek w funkcji rysującej (warunek bez sensu bo print(pn.ndin(z) gdzie z to lista wypisuje jeden ale to nie jest atrybut więc nie zadziała).
Tablice mają ndim i mógłbym ich użyć ale tu pojawia się chaos informacyjny. Jedni piszą, że tablice to to samo co listy (co jest bzdurą) itd. Tutaj wkleję mój kod żeby pokazać o co chodzi.
from mpl_toolkits.mplot3d import axes3d
from matplotlib import pyplot as plt
import numpy as np
from numpy import array
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
#x, y, z, = axes3d.get_test_data(0.05)
'''x = [1,2,3,4,5,6,7,8]
y = [1,2,3,4,5,6,7,8]
z = [3,4,5,6,7,7,7,8]'''
a = [0,10,20,30,40,50,60,70,80,90]
b = [0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360]
r = [301,301,300,299,297,298,296,294,294,291,293,292,292,290,291,288,287,286,288,289,288,288,288,290,289,291,294,294,295,297,297,299,300,301,299,298,299,
297,297,297,296,299,298,299,297,298,296,291,291,289,289,285,285,278,279,280,283,281,278,283,284,282,283,286,287,291,289,288,290,294,296,297,296,294,
291,292,289,289,296,298,295,293,287,279,281,279,276,281,283,277,273,278,274,278,279,286,286,281,283,280,272,271,281,290,287,292,295,297,290,285,286,
296,299,295,291,296,297,295,284,278,279,286,280,276,273,265,265,263,271,280,274,267,268,270,280,278,276,276,277,280,288,306,306,306,309,303,304,307,
314,308,306,296,299,302,292,290,287,282,281,278,275,272,275,276,280,279,277,276,273,271,271,271,278,271,278,290,292,294,294,302,299,303,307,307,313,
292,287,291,289,279,275,280,280,281,272,258,253,258,253,250,267,260,262,267,266,258,255,246,247,249,248,255,266,274,277,284,286,280,292,295,294,296,
290,278,276,271,259,263,266,256,261,258,244,236,240,232,229,246,246,252,254,241,240,237,228,236,235,242,256,258,258,265,276,284,281,288,291,287,291,
259,249,251,250,239,246,244,239,241,239,237,233,237,230,227,244,247,250,247,238,222,211,207,216,222,220,228,239,238,242,257,262,253,269,268,269,268,
246,231,240,235,217,200,208,219,232,243,237,245,250,247,241,270,278,285,283,261,249,229,207,192,197,202,199,203,199,209,222,230,232,244,243,250,255,
242,230,218,213,210,220,217,210,219,220,214,221,231,244,249,248,270,280,280,265,250,248,245,252,242,228,226,234,235,234,247,244,231,242,243,244,246]
i=0
j=0
k=0
x=[]
y=[]
z=array([])
for j in range(0, 10): #licznik dla a
for k in range(0,37): #licznik dla b
#while a[i]!=0:
xa=r[i]*np.sin(b[k]*10)*np.cos(a[j]*10)
#x[i]=xa
x.append(xa)
ya=r[i]*np.sin(a[j]*10)*np.sin(b[k]*10)
#y[i]=ya
y.append(ya)
za=r[i]*np.cos(b[k]*10)
#z[i]=za
z.append(za)
i+=1
#ax.plot_wireframe(x,y,z, rstride=10, cstride=10)
#print(i)
#ax.scatter(x,y,z)
print(np.ndim(z))
ax.plot_surface(x,y,z)
plt.show()
W pętli mam użyte z.append(za) i pomimo, że niektórzy piszą że tablice obsługują append to
from numpy import array
z=array([])
z.append(za)
daje
natomiast
import array
z=array.array([])
z.append(za)
Pyania:
-Czy mogę przy deklaracji tablicy podać ilość jej elementów, żeby pominąć rozszerzanie jej poprzez append?
-Czy tablicę można rozszerzać poprzez append?