3D plots working!

This commit is contained in:
Lars Ruthotto committed 2013-07-12 15:56:00 -07:00
1 parent 09b12ca52d
commit 3a08d40e5c
2 files changed
+116 -46

No files matched your search

+46 -4
View File
@@ -13,10 +13,13 @@ class TensorView(object):
def __init__(self):
pass
def plotImage(self, I, imageType='CC', figNum=1,ax=None):
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."
@@ -30,7 +33,7 @@ class TensorView(object):
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')
@@ -52,12 +55,51 @@ class TensorView(object):
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:
+70 -42
View File
@@ -21,7 +21,7 @@
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
"prompt_number": 8
},
{
"cell_type": "markdown",
@@ -42,19 +42,8 @@
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "'module' object is not callable",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-6-1d4a57352580>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mx0\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mh\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrand\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m51\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mmesh\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTensorMesh\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mx0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: 'module' object is not callable"
]
}
],
"prompt_number": 6
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "code",
@@ -73,17 +62,14 @@
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'mesh' is not defined",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-4-3c7d7da1661e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0msin\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mxc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmesh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgridCC\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mxn\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmesh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgridN\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'mesh' is not defined"
"output_type": "display_data",
"png": "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 truncated
"text": [
"<matplotlib.figure.Figure at 0x10b3f14d0>"
]
}
],
"prompt_number": 4
"prompt_number": 10
},
{
"cell_type": "markdown",
@@ -105,7 +91,8 @@
],
"language": "python",
"metadata": {},
"outputs": []
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "code",
@@ -125,46 +112,87 @@
"outputs": [
{
"output_type": "pyout",
"prompt_number": 3,
"prompt_number": 12,
"text": [
"<matplotlib.text.Text at 0x10c3dd390>"
"<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 0x10c3a1190>"
"<matplotlib.figure.Figure at 0x10ac769d0>"
]
}
],
"prompt_number": 3
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Test 3D Plots\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"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": [
{
"ename": "SyntaxError",
"evalue": "invalid syntax (<ipython-input-8-2ecb5b820872>, line 2)",
"output_type": "pyerr",
"traceback": [
"\u001b[0;36m File \u001b[0;32m\"<ipython-input-8-2ecb5b820872>\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m type(ax)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
"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": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
"prompt_number": 2
}
],
"metadata": {}