3-Dim Graphen plotten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hanuta
User
Beiträge: 3
Registriert: Sonntag 8. Januar 2012, 19:16

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
Benutzeravatar
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
Hanuta
User
Beiträge: 3
Registriert: Sonntag 8. Januar 2012, 19:16

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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
Das Leben ist wie ein Tennisball.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Hanuta hat geschrieben:Meinst du das folgende? :)
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:

Code: Alles auswählen

from __future__ import division

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
Ansonsten gibt es für Matplotlib dieses schöne Sammlung von Beispielen, in der es auch Beispiele für 3d Plots gibt.

Grüße
Gerrit
Hanuta
User
Beiträge: 3
Registriert: Sonntag 8. Januar 2012, 19:16

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.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

@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.
Antworten