python fipy_单个查看器中的两个轮廓图 - Python FiPy

这段代码展示了一个名为PhaseViewer的类,该类继承自Matplotlib2DGridViewer,并用于绘制2D等高线图。类中包含了初始化方法、绘图方法以及对数据进行缩放和等高线设置的逻辑。通过实例化这个类,用户可以自定义显示两个变量的相位图,并自动调整颜色映射和等高线级别。
摘要由CSDN通过智能技术生成

我刚看到这个,所以希望它对你有用。我不确定为什么你的版本不起作用,虽然我通常发现pylab的工作水平太高而且自动做太多事情。

我将以下内容基于Matplotlib2DContourViewer,它似乎做你想要的:

class PhaseViewer(Matplotlib2DGridViewer):

def __init__(self, phasesigma, phasegamma, title = None, limits ={}, **kwlimits):

self.phasesigma = phasesigma

self.contour1 = None

self.phasegamma = phasegamma

self.contour2 = None

self.number = 10

self.levels = None

Matplotlib2DGridViewer.__init__(self, vars=(1-phasegamma-phasesigma),title=title,cmap=pylab.cm.hot,limits ={}, **kwlimits)

def _plot(self):

Matplotlib2DGridViewer._plot(self)

if hasattr(self, "_contourSet"):

for countourSet in self._contourSet:

for collection in ccontourSet.collections:

try:

ix = self.axes.collections.index(collection)

except ValueError, e:

ix = None

if ix is not None:

del self.axes.collections[ix]

self._contourSet = []

for var in (self.phasesigma, self.phasegamma):

mesh = var.mesh

x, y = mesh.cellCenters

z = var.value

xmin, ymin = mesh.extents['min']

xmax, ymax = mesh.extents['max']

from matplotlib.mlab import griddata

xi = fp.numerix.linspace(xmin, xmax, 1000)

yi = fp.numerix.linspace(ymin, ymax, 1000)

# grid the data.

zi = griddata(x, y, z, xi, yi, interp='linear')

zmin, zmax = self._autoscale(vars=[var],

datamin=self._getLimit(('datamin', 'zmin')),

datamax=self._getLimit(('datamax', 'zmax')))

self.norm.vmin = zmin

self.norm.vmax = zmax

if self.levels is not None:

levels = self.levels

else:

levels = fp.numerix.arange(self.number + 1) * (zmax - zmin) / self.number + zmin

self._contourSet.append(self.axes.contour(xi, yi, zi, levels=levels, cmap=self.cmap))

self.axes.set_xlim(xmin=self._getLimit('xmin'),

xmax=self._getLimit('xmax'))

self.axes.set_ylim(ymin=self._getLimit('ymin'),

ymax=self._getLimit('ymax'))

if self.colorbar is not None:

self.colorbar.plot()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值