Я пытаюсь решить две независимые переменные, геометрически изменяющиеся в заданной области. Я хочу отобразить их дисперсию на одном экране просмотра. Как я могу получить два разных контурных графика, по одному для независимой переменной в одном окне просмотра? Я использовал следующий код для двойного контура, но не могу получить разные контуры для обеих переменных (фаза-гамма и фаза-сигма в моем случае). Подскажите, пожалуйста, как это можно исправить или каким-либо другим образом получить два контура на одном графике.
import pylab
class PhaseViewer(Matplotlib2DGridViewer):
def __init__(self, phasesigma, phasegamma, title = None, limits ={}, **kwlimits):
self.phasesigma = phasesigma
self.contour1 = None
self.phasegamma = phasegamma
self.contour2 = None
Matplotlib2DGridViewer.__init__(self, vars=(1-phasegamma-phasesigma),title=title,cmap=pylab.cm.hot,limits ={}, **kwlimits)
def _plot(self):
Matplotlib2DGridViewer._plot(self)
if self.contour1 is not None or self.contour2 is not None:
for Ccr in self.contour1.collections:
Ccr.remove()
for Cni in self.contour1.collections:
Cni.remove()
mesh = self.phasesigma.getMesh()
mesh2 = self.phasegamma.getMesh()
shape = mesh.getShape()
shape2 = mesh2.getShape()
x, y = mesh.getCellCenters()
z = self.phasesigma.getValue()
x, y, z = [a.reshape(shape, order="FORTRAN") for a in (x, y, z)]
self.contour1 = pylab.contour(x, y, z, (0.5,))
l, m = mesh1.getCellCenters()
w = self.phasegamma.getValue()
l, m, w = [b.reshape(shape, order ="FORTRAN") for b in (l, m, w)]
self.contour2 = pylab.contour(l, m, w, (0.5,))
raw_input("check2")
viewer = PhaseViewer(phasesigma=phasesigma, phasegamma=phasegamma,\
title = r"%s & %s" % (phasegamma.name, phasesigma.name), datamin=0., datamax=1.)
кроме ImportError: viewer = MultiViewer(viewers=(Viewer(vars=phasesigma, datamin=0.,datamax=1), Viewer(vars=phasegamma,datamin=0.,datamax=1.)))
contour
на обычной паре осейmatplotlib
, а неMatplotlib2DGridViewer
? - person ali_m   schedule 14.06.2013