2017-08-25 3 views
1

Ich habe mich im Internet umgeschaut, aber ich habe keine Lösung gefunden.Set Colorbar Bereich für eine MLab Oberfläche

Ich zeichne verschiedene Oberflächen in der gleichen Abbildung mit mlab.pipeline.surface(mesh). Ich würde sie gerne mit derselben Farbleiste plotten.

In dieser Abbildung ist der rechte Teil der Oberflächen auf der gleichen Temperatur, aber da der Farbbalken für jede Oberfläche unterschiedlich ist, ist die Farbe unterschiedlich. Ich denke, es sollte etwas wie matplotlib.tricontourf(...,levels=...) sein, um den Farbbalkenbereich zu beheben.

surfacemesh

Wie kann ich die colorbar Bereich mlab mit?

+1

Könnten Sie ein kurzes Beispiel nach, was Sie erreichen wollen? Es wäre viel einfacher für mögliche Antworten gemacht werden. Stackoverflow hat eine [Hilfeseite dazu] (https://stackoverflow.com/help/mcve) –

Antwort

0

Sie können sich die integrierte Dokumentation von mlab ansehen. Von help(mlab.pipeline.surface):

:vmax: vmax is used to scale the colormap. 
     If None, the max of the data will be used 

:vmin: vmin is used to scale the colormap. 
     If None, the min of the data will be used 

Mit anderen Worten, Sie müssen das globale Minimum und globales Maximum Ihrer Daten in jedem Datensatz zu berechnen, und die gleichen Extrema für jede Oberfläche von Ihnen festgelegt. Beachten Sie, dass Sie mit den 3D-Plot-Methoden von Matplotlib genau dasselbe (mit genau den gleichen Stichwörtern) machen können.

Tangentiale Notiz: Ihr Anwendungsfall könnte auch von etwas Transparenz profitieren, da sich Ihre Oberflächen wahrscheinlich überlappen, was die Visualisierung behindern könnte. Die beiden Schlüsselwörter, die in den Sinn kommen, sind opacity und vielleicht (wenn auch weniger wahrscheinlich) transparent:

:opacity: The overall opacity of the vtk object. Must be a float. 
      Default: 1.0 
:transparent: make the opacity of the actor depend on the 
       scalar.