2013-10-17 18 views
6

Von the documentation example here kann man mit dem Code-Snippet einfach das folgende Konturdiagramm erstellen.Koordinaten von der Kontur in Matplotlib erhalten?

import matplotlib 
import numpy as np 
import matplotlib.cm as cm 
import matplotlib.mlab as mlab 
import matplotlib.pyplot as plt 

matplotlib.rcParams['xtick.direction'] = 'out' 
matplotlib.rcParams['ytick.direction'] = 'out' 

delta = 0.025 
x = np.arange(-3.0, 3.0, delta) 
y = np.arange(-2.0, 2.0, delta) 
X, Y = np.meshgrid(x, y) 
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) 
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) 
# difference of Gaussians 
Z = 10.0 * (Z2 - Z1) 

# Create a simple contour plot with labels using default colors. The 
# inline argument to clabel will control whether the labels are draw 
# over the line segments of the contour, removing the lines beneath 
# the label 
plt.figure() 
CS = plt.contour(X, Y, Z) 
plt.clabel(CS, inline=1, fontsize=10) 
plt.title('Simplest default with labels') 

enter image description here

Mein Ziel

Ich habe meine Konturplot erhalten und bekam inzwischen den matplotlib.contour.QuadContourSet Instanz CS. Im Beispielschnipsel wird CS nur für clabel() verwendet. Für meinen Fall, muss ich entweder die Gleichung der Konturlinie oder den Koordinatensatz für weitere Berechnungen erhalten.

Wie kann ich die Koordinaten der Konturlinie aus der Instanz extrahieren? ODER Wie kann ich es auf andere Weise erreichen?

Ich wette, es muss einen Weg geben, dies zu tun. Ansonsten ist das Konturding dann nur eine "Vase zur Visualisierung".

+1

http://scikit-image.org/docs/dev/auto_examples/plot_contours.html – tacaswell

Antwort

10

Sie können die Koordinaten der Konturen aus der CS.allsegs Liste abrufen.

Versuchen:

dat0= CS.allsegs[0][0] 
plt.plot(dat0[:,0],dat0[:,1]) 

die erste (-1) Kontur Ebene zu zeichnen.

+0

Was ist, wenn Sie mehrere Konturebenen mit dem gleichen Wert haben, sagen mehrere (-1) Kontur Ebenen ... Wie können Sie extrahieren die Koordinaten der Menge all dieser Werte? – max29

+0

Zur Verdeutlichung: Was ist, wenn Sie mehrere Regionen auf dem gleichen Höhenwert haben, sagen wir mehrere (-1) Konturregionen ... Wie können Sie die Koordinaten der Menge aller dieser Regionen extrahieren? – max29

+0

Alle einzelnen Konturlinien werden im 2d-Array (CS.allsegs) platziert. Wenn Sie dieses Array überprüfen, werden Sie die Linien finden, die demselben Konturwert entsprechen, der an demselben ersten Index platziert wird. – Jakob

Verwandte Themen