2014-01-28 7 views
8

Ich habe ein Oberflächenplot mit einigen Daten in Python gemacht.Ändern der Linienfarbe in plot_surface

enter image description here

Jetzt habe ich versucht, den Stil einer solchen Handlung zu ändern. Aber leider stecke ich in der Linienfarbe fest. Es ist standardmäßig schwarz, aber ich möchte es rot oder eine andere Farbe machen.

Mein Code ist:

from mpl_toolkits.mplot3d import Axes3D 

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

data=np.loadtxt("test.txt") 


def formateU(data): 
    U = np.zeros((20,20)) 
    for value in data: 
     U[value[0],value[1]] = value[2] 
    return U 

U = formateU(data) 


y,x=np.meshgrid(np.linspace(0.,19,20),np.linspace(0.,19,20)) 

fig = plt.figure() 

ax=plt.axes(projection='3d') 

ax.plot_surface(x,y,U,rstride=1,cstride=1,alpha=0,linewidth=0.5) 

ax.view_init(30, 45) 

plt.savefig("test.png") 

plt.show() 

Es scheint offensichtlich, dass es ein zusätzliches Argument sein muss, in:

ax.plot_surface(x,y,U,rstride=1,cstride=1,alpha=0,linewidth=0.5) 

aber ich kann es nicht herausgefunden.

Können Sie mir bitte helfen?

Die test.txt ist bei http://www.file-upload.net/download-8564062/test.txt.html

+1

Versuchen 'r'' 'edgecolors =! – Jakob

+0

Es funktioniert! Vielen Dank! – Andy

+0

['plot_surface()'] (http://matplotlib.org/mpl_toolkits/mplot3d/api.html#mpl_toolkits.mplot3d.axes3d.Axes3D.plot_surface) nimmt auch Argumente 'color' und' cmap'. – MattDMo

Antwort

7

Wie die gewünschten Keywords zu finden:
Die plot_surface Methode eine Poly3DCollection erzeugt, die auf PolyCollections basiert. Letztere erhalten die Schlüsselwörter wie edgecolors (oder facecolors).

In Ihrem Beispiel:

ax.plot_surface(x,y,U,rstride=1,cstride=1,alpha=0,linewidth=0.5, edgecolors='r') 

enter image description here

3

verfügbar Da Sie die alpha auf Null gesetzt haben und nicht die Oberfläche Fliesen aufgetragen, können Sie stattdessen mit plot_wireframe berücksichtigen wollen, wo color die Linie setzt Farbe (anstatt der Fliesenfarbe wie in plot_surface).

Aber wie Jakob vorgeschlagen hat, wird edgecolors auch funktionieren.

Verwandte Themen