Dies ist eine alte Version des Dokuments!
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np myArray = np.loadtxt("etopo1_bedrock.asc", skiprows=6) z,s=myArray.shape x=np.zeros((z,s)) for i in range(z): x[i]=i y=np.zeros((z,s)) for i in range(s): y[:,i]=i z=myArray fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z, zdir='z', c= 'red') plt.show()
# -*- coding: utf-8 -*- import numpy as np ### erzeuge ein Gitter von x,y-Werten mit zugehörigen z-Werten x=np.linspace(-1,1,10) y=np.linspace(-1,1,10) XX,YY=np.meshgrid(x,y) ZZ=np.sin(XX*XX+YY*YY) ### Erzeuge ein Array mit (x,y)-Koordinaten und eines ### mit (x,y,z)-Koordinaten points3d = np.array([XX.flatten(),YY.flatten(),ZZ.flatten()]).T points2d= np.array([XX.flatten(),YY.flatten()]).T ### Berechne Delaunay-Triangulierung des Gitters from scipy.spatial import Delaunay tri = Delaunay(points2d) ### Darstellung auf der Basis der erzeugten Dreiecke -- es gibt ### in Matplotlib ganz verschiedene Schnittstellen, die dasselbe ### tun. ### Hier wird mit ax=mplot3d.Axes3D(...) ein 3d-Koordinatensystem ### erzeugt, dem man 3d-Objekte hinzufügen kann mit ax.add_collection3d(...) ### In unserem Fall werden Dreiecke hinzugefügt, die mit ### mplot3d.art3d.Poly3DCollection(...) werden import mpl_toolkits.mplot3d as mplot3d import matplotlib.colors as colors import pylab as pl import numpy as np ax = mplot3d.Axes3D(pl.figure()) for simplex in tri.simplices: ecken = np.array([points3d[simplex[0]],points3d[simplex[1]],points3d[simplex[2]]]) dreieck = mplot3d.art3d.Poly3DCollection([ecken]) ### Man kann von diesen Graphikobjekten Eigenschaften einstellen: dreieck.set_color(colors.rgb2hex(np.random.rand(3))) dreieck.set_edgecolor('k') ax.add_collection3d(dreieck) pl.show()