Hallo,
ich bin ein Python-Neueinsteiger.
Ich schreibe ein Programm in dem ich einen 3-dimensionalen Plot machen will.
Im Prinzip möchte ich Werte auf einem Gitter plotten.
Genauer: x soll die Werte 0, 1/n*3, 2/n*3, ..., 3 und y die Werte 0, 1/m*4, 2/m*4, ... , 4 annehmen.
Dann soll eine Funktion z(x,y) geplottet werden.
Ich habe es so versucht:
x = linspace(0,3,n)
y = linspace(0,4,m)
z = 2*x+y
plot(x,y,z)
show()
Leider klappt es so nicht und es erscheint die Fehlermeldung:
ValueError: operands could not be broadcast together with shapes (9) (8)
Vielen Dank.
Mfg, Hanuta
PS: Python macht Spaß :K
3-Dim Graphen plotten
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Vielleicht wäre es sinnvoll die Lib / das Framework oder das Modul anzugeben, welches Du verwendest
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Meinst du das folgende?
from __future__ import division
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from numpy.linalg import solve
from matplotlib import cm
from numpy import array,zeros,pi,sin,cos,exp,arange,meshgrid
from numpy import *
from matplotlib.pyplot import figure, plot, show
from matplotlib.pyplot import plot, title, show, legend
from numpy import linspace, pi, sin
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
n=9
m=8
from __future__ import division
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from numpy.linalg import solve
from matplotlib import cm
from numpy import array,zeros,pi,sin,cos,exp,arange,meshgrid
from numpy import *
from matplotlib.pyplot import figure, plot, show
from matplotlib.pyplot import plot, title, show, legend
from numpy import linspace, pi, sin
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
n=9
m=8
Hallo.
Die Fehlermeldung sagt es doch eigentlich schon: x und y haben verschiedene Größen. Nur weil du einfach multiplizierst wird daraus noch kein Gitter. Schau dir mal dieses Beispiel an, dort steht wie es richtig gemacht wird.
Deine Importe solltest du dringend aufräumen. Die sehen nicht so aus als wüsstest du was du eigentlich tust.
Sebastian
Die Fehlermeldung sagt es doch eigentlich schon: x und y haben verschiedene Größen. Nur weil du einfach multiplizierst wird daraus noch kein Gitter. Schau dir mal dieses Beispiel an, dort steht wie es richtig gemacht wird.
Deine Importe solltest du dringend aufräumen. Die sehen nicht so aus als wüsstest du was du eigentlich tust.
Sebastian
Das Leben ist wie ein Tennisball.
Nein, die Frage war welche Bibliothek du verwendest: Scheint ja Matplotlib zu sein. Das sind übrigens eindeutig zu viele ``import``e, folgendes würde es auch tun:Hanuta hat geschrieben:Meinst du das folgende?
Code: Alles auswählen
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
Grüße
Gerrit
Ok, ich bin mit den beispielen nicht gut zurecht gekommen und formuliere mein Problem nochmal exakter:
Ich habe eine Funktion z(x,y), welche auf einem 2d-Gebiet werte (Temperaturen), also reelle werte annimmt. Und hätte gerne einen Funktionsplotter dazu. Nach Möglichkeit hätte ich gerne eine farbliche Ausgabe auf einem 2d-Gebiet. Ich habe nur Werte an bestimmten x,y-Stellen, wobei es nicht genau so viele x- wie y-werte gibt.
Ansonsten steht mein Programm eigentlich schon komplett. Ich benutze leider zum ersten mal python und brauche es auch nur für dieses eine programm....
LG,
Hanuta.
Ich habe eine Funktion z(x,y), welche auf einem 2d-Gebiet werte (Temperaturen), also reelle werte annimmt. Und hätte gerne einen Funktionsplotter dazu. Nach Möglichkeit hätte ich gerne eine farbliche Ausgabe auf einem 2d-Gebiet. Ich habe nur Werte an bestimmten x,y-Stellen, wobei es nicht genau so viele x- wie y-werte gibt.
Ansonsten steht mein Programm eigentlich schon komplett. Ich benutze leider zum ersten mal python und brauche es auch nur für dieses eine programm....
LG,
Hanuta.
@Hanuta: In dem Fall würde ich 'pcolormesh' (bzw. 'pcolor'), 'imshow' oder 'countour' (bzw 'countourf') benutzen. Dazu gibt es auch einige Beispiele in den Matplotlib Beispielen.