mirror of
https://github.com/wassname/simpeg.git
synced 2026-09-30 11:42:17 +08:00
commit
4e1e56b15a
31 files changed
+371
-98
No files matched your search
@@ -0,0 +1 @@
|
||||
*.pyc
|
||||
@@ -128,7 +128,7 @@ class BaseMesh(object):
|
||||
|
||||
def nN():
|
||||
doc = "Total number of nodes"
|
||||
fget = lambda self: self.n + 1
|
||||
fget = lambda self: np.prod(self.n + 1)
|
||||
return locals()
|
||||
nN = property(**nN())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -23,7 +23,7 @@ class TensorMesh(BaseMesh, TensorView):
|
||||
def __init__(self, h, x0=None):
|
||||
super(TensorMesh, self).__init__(np.array([len(x) for x in h]), x0)
|
||||
|
||||
assert len(h) == len(x0), "Dimension mismatch. x0 != len(h)"
|
||||
assert len(h) == len(self.x0), "Dimension mismatch. x0 != len(h)"
|
||||
|
||||
for i, h_i in enumerate(h):
|
||||
assert type(h_i) == np.ndarray, ("h[%i] is not a numpy array." % i)
|
||||
@@ -0,0 +1,166 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib
|
||||
from mpl_toolkits.mplot3d import Axes3D
|
||||
|
||||
|
||||
class TensorView(object):
|
||||
"""
|
||||
Provides viewing functions for TensorMesh
|
||||
|
||||
This class is inherited by TensorMesh
|
||||
"""
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def plotImage(self, I, imageType='CC', figNum=1,ax=None,direction='z',numbering=True):
|
||||
|
||||
assert type(I) == np.ndarray, "I must be a numpy array"
|
||||
assert type(numbering) == bool, "numbering must be a bool"
|
||||
assert imageType in ["CC", "N"], "imageType must be 'CC' or 'N'"
|
||||
assert direction in ["x", "y","z"], "direction must be either x,y, or z"
|
||||
|
||||
|
||||
if imageType == 'CC':
|
||||
assert I.size == self.nC, "Incorrect dimensions for CC."
|
||||
elif imageType == 'N':
|
||||
assert I.size == self.nN, "Incorrect dimensions for N."
|
||||
|
||||
if ax is None:
|
||||
fig = plt.figure(figNum)
|
||||
fig.clf()
|
||||
ax = plt.subplot(111)
|
||||
else:
|
||||
assert isinstance(ax,matplotlib.axes.Axes), "ax must be an Axes!"
|
||||
fig = ax.figure
|
||||
|
||||
if self.dim == 1:
|
||||
if imageType == 'CC':
|
||||
ph = ax.plot(self.vectorCCx, I, '-ro')
|
||||
elif imageType == 'N':
|
||||
ph = ax.plot(self.vectorNx, I, '-bs')
|
||||
ax.set_xticks(self.vectorNx)
|
||||
ax.set_xlabel("x")
|
||||
ax.axis('tight')
|
||||
elif self.dim == 2:
|
||||
if imageType == 'CC':
|
||||
C = I[:].reshape(self.n, order='F')
|
||||
elif imageType == 'N':
|
||||
C = I[:].reshape(self.n+1, order='F')
|
||||
C = 0.25*(C[:-1, :-1] + C[1:, :-1] + C[:-1, 1:] + C[1:, 1:])
|
||||
|
||||
ph = ax.pcolormesh(self.vectorNx, self.vectorNy, C.T)
|
||||
ax.axis('tight')
|
||||
ax.set_xlabel("x")
|
||||
ax.set_ylabel("y")
|
||||
ax.set_xticks(self.vectorNx)
|
||||
ax.set_yticks(self.vectorNy)
|
||||
|
||||
elif self.dim == 3:
|
||||
if direction == 'z':
|
||||
nX = np.ceil(np.sqrt(self.nCz))
|
||||
nY = np.ceil(self.nCz/nX)
|
||||
C = np.zeros((nX*self.nCx, nY*self.nCy))
|
||||
|
||||
Ic = I[:].reshape(self.n, order='F')
|
||||
|
||||
nCx = self.nCx
|
||||
nCy = self.nCy
|
||||
for iy in range(int(nY)):
|
||||
for ix in range(int(nX)):
|
||||
iz = ix + iy*nX
|
||||
if iz < self.nCz:
|
||||
C[ix*nCx:(ix+1)*nCx, iy*nCy:(iy+1)*nCy] = Ic[:, :, iz]
|
||||
else:
|
||||
C[ix*nCx:(ix+1)*nCx, iy*nCy:(iy+1)*nCy] = np.nan
|
||||
|
||||
C = np.ma.masked_where(np.isnan(C), C)
|
||||
xx = np.r_[0, np.cumsum(np.kron(np.ones((nX, 1)), self.hx).ravel())]
|
||||
yy = np.r_[0, np.cumsum(np.kron(np.ones((nY, 1)), self.hy).ravel())]
|
||||
ph = ax.pcolormesh(xx, yy, C.T)
|
||||
# Plot the lines
|
||||
gx = np.r_[0, np.cumsum(np.kron(np.ones((nX, 1)), np.sum(self.hy)).ravel())]
|
||||
gy = np.r_[0, np.cumsum(np.kron(np.ones((nY, 1)), np.sum(self.hx)).ravel())]
|
||||
# Repeat and seperate with NaN
|
||||
gxX = np.c_[gx, gx, gx+np.nan].ravel()
|
||||
gxY = np.kron(np.ones((nX+1, 1)), np.array([0, sum(self.hy)*nY, np.nan])).ravel()
|
||||
gyX = np.kron(np.ones((nY+1, 1)), np.array([0, sum(self.hx)*nX, np.nan])).ravel()
|
||||
gyY = np.c_[gy, gy, gy+np.nan].ravel()
|
||||
ax.plot(gxX, gxY, 'w-', linewidth=2)
|
||||
ax.plot(gyX, gyY, 'w-', linewidth=2)
|
||||
|
||||
if numbering:
|
||||
pad = np.sum(self.hx)*0.04
|
||||
for iy in range(int(nY)):
|
||||
for ix in range(int(nX)):
|
||||
iz = ix + iy*nX
|
||||
ax.text((ix+1)*self.vectorNx[-1]-pad,(iy)*self.vectorNy[-1]+pad,
|
||||
'#%i'%iz,color='w',verticalalignment='bottom',horizontalalignment='right',size='x-large')
|
||||
|
||||
fig.show()
|
||||
return ph
|
||||
|
||||
def plotGrid(self):
|
||||
"""Plot the nodal, cell-centered and staggered grids for 1,2 and 3 dimensions."""
|
||||
if self.dim == 1:
|
||||
fig = plt.figure(1)
|
||||
fig.clf()
|
||||
ax = plt.subplot(111)
|
||||
xn = self.gridN
|
||||
xc = self.gridCC
|
||||
ax.hold(True)
|
||||
ax.plot(xn, np.ones(np.shape(xn)), 'bs')
|
||||
ax.plot(xc, np.ones(np.shape(xc)), 'ro')
|
||||
ax.plot(xn, np.ones(np.shape(xn)), 'k--')
|
||||
ax.grid(True)
|
||||
ax.hold(False)
|
||||
ax.set_xlabel('x1')
|
||||
fig.show()
|
||||
elif self.dim == 2:
|
||||
fig = plt.figure(2)
|
||||
fig.clf()
|
||||
ax = plt.subplot(111)
|
||||
xn = self.gridN
|
||||
xc = self.gridCC
|
||||
xs1 = self.gridFx
|
||||
xs2 = self.gridFy
|
||||
|
||||
ax.hold(True)
|
||||
ax.plot(xn[:, 0], xn[:, 1], 'bs')
|
||||
ax.plot(xc[:, 0], xc[:, 1], 'ro')
|
||||
ax.plot(xs1[:, 0], xs1[:, 1], 'g>')
|
||||
ax.plot(xs2[:, 0], xs2[:, 1], 'g^')
|
||||
ax.grid(True)
|
||||
ax.hold(False)
|
||||
ax.set_xlabel('x1')
|
||||
ax.set_ylabel('x2')
|
||||
fig.show()
|
||||
elif self.dim == 3:
|
||||
fig = plt.figure(3)
|
||||
fig.clf()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
xn = self.gridN
|
||||
xc = self.gridCC
|
||||
xfs1 = self.gridFx
|
||||
xfs2 = self.gridFy
|
||||
xfs3 = self.gridFz
|
||||
|
||||
xes1 = self.gridEx
|
||||
xes2 = self.gridEy
|
||||
xes3 = self.gridEz
|
||||
|
||||
ax.hold(True)
|
||||
ax.plot(xn[:, 0], xn[:, 1], 'bs', zs=xn[:, 2])
|
||||
ax.plot(xc[:, 0], xc[:, 1], 'ro', zs=xc[:, 2])
|
||||
ax.plot(xfs1[:, 0], xfs1[:, 1], 'g>', zs=xfs1[:, 2])
|
||||
ax.plot(xfs2[:, 0], xfs2[:, 1], 'g<', zs=xfs2[:, 2])
|
||||
ax.plot(xfs3[:, 0], xfs3[:, 1], 'g^', zs=xfs3[:, 2])
|
||||
ax.plot(xes1[:, 0], xes1[:, 1], 'k>', zs=xes1[:, 2])
|
||||
ax.plot(xes2[:, 0], xes2[:, 1], 'k<', zs=xes2[:, 2])
|
||||
ax.plot(xes3[:, 0], xes3[:, 1], 'k^', zs=xes3[:, 2])
|
||||
ax.grid(True)
|
||||
ax.hold(False)
|
||||
ax.set_xlabel('x1')
|
||||
ax.set_ylabel('x2')
|
||||
ax.set_zlabel('x3')
|
||||
fig.show()
|
||||
@@ -0,0 +1 @@
|
||||
from TensorMesh import TensorMesh
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,96 +0,0 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from mpl_toolkits.mplot3d import Axes3D
|
||||
|
||||
|
||||
class TensorView(object):
|
||||
"""
|
||||
Provides viewing functions for TensorMesh
|
||||
|
||||
This class is inherited by TensorMesh
|
||||
"""
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def plotImage(self, I):
|
||||
|
||||
if self.dim == 1:
|
||||
fig = plt.figure(1)
|
||||
fig.clf()
|
||||
ax = plt.subplot(111)
|
||||
if np.size(I) == self.n[0]:
|
||||
print 'cell-centered image'
|
||||
xx = self.gridCC
|
||||
ax.plot(xx[0], I, 'ro')
|
||||
elif np.size(I) == self.n[0]+1:
|
||||
print 'nodal image'
|
||||
xx = self.gridN
|
||||
ax.plot(xx[0], I, 'bs')
|
||||
|
||||
fig.show()
|
||||
|
||||
def plotGrid(self):
|
||||
"""Plot the nodal, cell-centered and staggered grids for 1,2 and 3 dimensions."""
|
||||
if self.dim == 1:
|
||||
fig = plt.figure(1)
|
||||
fig.clf()
|
||||
ax = plt.subplot(111)
|
||||
xn = self.gridN
|
||||
xc = self.gridCC
|
||||
print xn
|
||||
ax.hold(True)
|
||||
ax.plot(xn, np.ones(np.shape(xn)), 'bs')
|
||||
ax.plot(xc, np.ones(np.shape(xc)), 'ro')
|
||||
ax.plot(xn, np.ones(np.shape(xn)), 'k--')
|
||||
ax.grid(True)
|
||||
ax.hold(False)
|
||||
ax.set_xlabel('x1')
|
||||
fig.show()
|
||||
elif self.dim == 2:
|
||||
fig = plt.figure(2)
|
||||
fig.clf()
|
||||
ax = plt.subplot(111)
|
||||
xn = self.gridN
|
||||
xc = self.gridCC
|
||||
xs1 = self.gridFx
|
||||
xs2 = self.gridFy
|
||||
|
||||
ax.hold(True)
|
||||
ax.plot(xn[:, 0], xn[:, 1], 'bs')
|
||||
ax.plot(xc[:, 0], xc[:, 1], 'ro')
|
||||
ax.plot(xs1[:, 0], xs1[:, 1], 'g>')
|
||||
ax.plot(xs2[:, 0], xs2[:, 1], 'g^')
|
||||
ax.grid(True)
|
||||
ax.hold(False)
|
||||
ax.set_xlabel('x1')
|
||||
ax.set_ylabel('x2')
|
||||
fig.show()
|
||||
elif self.dim == 3:
|
||||
fig = plt.figure(3)
|
||||
fig.clf()
|
||||
ax = fig.add_subplot(111, projection='3d')
|
||||
xn = self.gridN
|
||||
xc = self.gridCC
|
||||
xfs1 = self.gridFx
|
||||
xfs2 = self.gridFy
|
||||
xfs3 = self.gridFz
|
||||
|
||||
xes1 = self.gridEx
|
||||
xes2 = self.gridEy
|
||||
xes3 = self.gridEz
|
||||
|
||||
ax.hold(True)
|
||||
ax.plot(xn[:, 0], xn[:, 1], 'bs', zs=xn[:, 2])
|
||||
ax.plot(xc[:, 0], xc[:, 1], 'ro', zs=xc[:, 2])
|
||||
ax.plot(xfs1[:, 0], xfs1[:, 1], 'g>', zs=xfs1[:, 2])
|
||||
ax.plot(xfs2[:, 0], xfs2[:, 1], 'g<', zs=xfs2[:, 2])
|
||||
ax.plot(xfs3[:, 0], xfs3[:, 1], 'g^', zs=xfs3[:, 2])
|
||||
ax.plot(xes1[:, 0], xes1[:, 1], 'k>', zs=xes1[:, 2])
|
||||
ax.plot(xes2[:, 0], xes2[:, 1], 'k<', zs=xes2[:, 2])
|
||||
ax.plot(xes3[:, 0], xes3[:, 1], 'k^', zs=xes3[:, 2])
|
||||
ax.grid(True)
|
||||
ax.hold(False)
|
||||
ax.set_xlabel('x1')
|
||||
ax.set_ylabel('x2')
|
||||
ax.set_zlabel('x3')
|
||||
fig.show()
|
||||
@@ -0,0 +1,201 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "exPlotImage2D"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
"worksheets": [
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import sys\n",
|
||||
"sys.path.append('../')\n",
|
||||
"\n",
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"from SimPEG import TensorMesh"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 8
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Test 1D Plots\n",
|
||||
"\n",
|
||||
"For 1D nodal or cell-centered plots are supported.\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"x0 = np.zeros(1)\n",
|
||||
"h = np.random.rand(51)\n",
|
||||
"mesh = TensorMesh([h],x0)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 9
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"sin = lambda x: np.sin(x)\n",
|
||||
"xc = mesh.gridCC\n",
|
||||
"xn = mesh.gridN\n",
|
||||
"\n",
|
||||
"fig = plt.figure(1)\n",
|
||||
"fig.clf()\n",
|
||||
"ph1 = mesh.plotImage(sin(xc),ax=subplot(111))\n",
|
||||
"ph2 = mesh.plotImage(sin(xn),ax=subplot(111),imageType='N')\n"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x10b3f14d0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 10
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Test 2D Plots\n",
|
||||
"\n",
|
||||
"Plot x and y coordinates of cell-centred points"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"x0 = np.zeros(2)\n",
|
||||
"h1 = np.linspace(.1,.5,3)\n",
|
||||
"h2 = np.linspace(.1,.5,5)\n",
|
||||
"mesh = TensorMesh([h1,h2],x0)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 11
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"fig = plt.figure(1)\n",
|
||||
"fig.clf()\n",
|
||||
"ax1 = subplot(121)\n",
|
||||
"ax2 = subplot(122)\n",
|
||||
"mesh.plotImage(mesh.gridCC[:,0],ax = ax1)\n",
|
||||
"ax1.set_title('x coordinates') \n",
|
||||
"mesh.plotImage(mesh.gridCC[:,1],ax = ax2)\n",
|
||||
"ax2.set_title('y coordinates') "
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 12,
|
||||
"text": [
|
||||
"<matplotlib.text.Text at 0x10b3d0f90>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAETCAYAAAA23nEoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGVVJREFUeJzt3XtwVOX9x/HPRlIMoCEkEeyAidFIEiABciNcYytgJ5VL\ny4jRosLghLZyLYxFy7A4SjuiAqYKkbGtlMvQAgW8VApNkyhIEm4/IMAgkZUKFAhikHAxDM/vD44L\nkQSScE422bxfMzvuyXnynO/ufA+f3SdnV5cxxggA0OwF+LoAAEDjQCAAACQRCAAAC4EAAJBEIAAA\nLAQCAEASgeCXIiMjlZubK0maPXu2nnnmGR9XBNw6+tp5LXxdAOzncrm8959//nnb5g0ICNDBgwcV\nFRVl25xAbdHXzuMdQhN26dKlBj8mn2OE0+hr3yEQ6qC0tFShoaHasWOHJOno0aMKDw9XQUFBtePL\nysr0+uuvq1u3bgoLC9P48eO9+9atW6eBAweqW7duWrhwoc6dO+fdt337dj399NOKjIzUjBkzdPTo\nUe++yMhIvfXWW+rdu7fatm2ry5cv69NPP9WgQYMUGRmp7OzsKjW43W6NGjVKkuTxeBQQEKDVq1cr\nNjZW8fHxWrJkiXdsUVGR0tLSFBISorS0NP3xj3/0npz9+/eXJCUkJOiOO+7Q3//+d0nSrl27NG7c\nON1zzz36zW9+o8OHD3vne+edd5SWlqbg4GDFxMR43+6jcZkzZ45GjBhR5WcTJkzQpEmTqh1PX/tx\nXxvUyaJFi0xcXJw5d+6cGTRokJk2bVqNY4cMGWJGjRplPvvsM3Px4kXzySefGGOMyc3NNffcc4/Z\nsGGDOXDggPnxj39sZs6caYwxpqKiwrRp08YsWrTInDhxwkyYMMEMGDDAO2dkZKSJi4szBQUF5sKF\nC+b06dOmVatW5t133zVHjhwxTzzxhAkMDDT//ve/jTHGuN1u84tf/MIYY8yhQ4eMy+UyI0eONIcP\nHzbr1683LVu2NOfPnzfGGLNt2zZTWFhoLl26ZDZt2mQiIiLMhg0bvMd2uVymtLTUu11WVmZCQkLM\nmjVrTHl5uZk9e7bp3bu3McaYkydPmo4dO5oDBw4YY4z54osvqvwuGo9jx46Z1q1bm6+//toYY0xl\nZaW56667zPbt26sdT1/7b18TCPUwZMgQ07VrV5OQkGC+/fbbasd8/fXXplWrVqasrOy6fRMmTDDT\np0/3bm/YsMHEx8cbY4xZvXq1SUtL8+6rqKioMk9kZKR58cUXvftXrFhh+vXr590uLS01LpfLe+LM\nnDnzuhNn27Zt3vGdO3c2//znP6t9DC+88IJ59tlnvdvfP3Hefvtt88wzz3i3L126ZO666y5z/Phx\nU1ZWZkJDQ837779f43OExuPhhx82ixYtMsYY895775kuXbpUO46+9u++ZsmoHsaOHauSkhKNHz9e\ngYGB1Y7ZtGmTIiIiFBoaet2+zZs3KzEx0budmJio3bt368yZM9q0aZN69uzp3deqVStFR0dr8+bN\n3p+lpqZ67xcVFSkhIcG7HRUVpeDg4BvW3717d+/9u+++2/vW/ciRIxo3bpzi4+N15513au7cudq1\na1eN82zcuFFLly5VSEiIQkJCFBYWpoqKChUUFCg0NFR//etfNXfuXN19992aNGmSTp48ecO64DtP\nPfWUd5llyZIl3uWY76Ov/buvCYQ6Onv2rCZNmqSxY8dq5syZOn36dLXjevfurS+++EKnTp26bl+f\nPn20detW7/bWrVu9zdq3b19t27bNu6+iokKfffaZevfu7f1ZixZXLw5LSUnRzp07vdulpaUqLy+v\n12N76aWXVFlZqQ8//FDl5eWaPHmyLl++7N0fEBBQ5Y9vP/rRj/Tkk0/q9OnT3tvZs2e969E/+clP\ntHHjRu3du1eHDh3SK6+8Uq+64LyhQ4dq165d2rNnjz744AM98cQT1Y6jr/27rwmEOpo4caJSUlL0\n9ttvKyMjQ+PGjat2XNu2bTVw4EBNmTJFBw8e1IULF7yvhoYOHarly5crNzdXBw8e1Jw5czRs2DBJ\n0sCBA1VSUqI//elPOnHihH73u98pOTm52ldkkjRo0CBt375dS5cu1dGjRzVr1qwqJ1ZdHD16VO3a\ntVNoaKjy8vK0ePHiKvsTExOrnPAjR47U6tWrtWbNGlVUVKiiokIffPCBzp49qwMHDig3N1cXL17U\nD37wA7Vs2VJ33HFHveqC84KCgvTzn/9cjz/+uFJTU9WxY8dqx9HX/t3XBEIdrF27Vv/617+0YMEC\nSdLrr7+u7du3a/ny5dWOf+edd9S1a1f99Kc/VadOnfS3v/1NkpSenq65c+dq9uzZGjZsmIYOHapp\n06ZJklq3bq3c3Fzl5+crOTlZQUFBWrp0aY01tW3bVuvXr9ef//xnpaWlKSUlpcrJ7HK5qly/fe39\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x10ac769d0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 12
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Test 3D Plots\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"x0 = np.zeros(3)\n",
|
||||
"h1 = np.linspace(.1,.5,3)\n",
|
||||
"h1 = np.r_[1,2,1]\n",
|
||||
"h2 = np.r_[1,3]\n",
|
||||
"h3 = np.linspace(.1,.5,5)\n",
|
||||
"\n",
|
||||
"mesh = TensorMesh([h1,h2,h3],x0)"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"ax1 = ax=subplot(131)\n",
|
||||
"ax2 = ax=subplot(132)\n",
|
||||
"ax3 = ax=subplot(133)\n",
|
||||
"a1 = mesh.plotImage(mesh.gridCC[:,0],ax=ax1)\n",
|
||||
"a2 = mesh.plotImage(mesh.gridCC[:,1],ax=ax2)\n",
|
||||
"a3 = mesh.plotImage(mesh.gridCC[:,2],ax=ax3)\n",
|
||||
"\n",
|
||||
"ax1.set_title('x coordinate')\n",
|
||||
"ax2.set_title('y coordinate')\n",
|
||||
"ax3.set_title('z coordinate')\n"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"stream": "stderr",
|
||||
"text": [
|
||||
"/Users/larsruthotto/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/figure.py:362: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure\n",
|
||||
" \"matplotlib is currently using a non-GUI backend, \"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 2,
|
||||
"text": [
|
||||
"<matplotlib.text.Text at 0x10cc8ab10>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x10c7671d0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 2
|
||||
}
|
||||
],
|
||||
"metadata": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user