手稿图
import numpy as np
import matplotlib.pyplot as plt
eqs = []
eqs.append((r"$W^{3\\beta}_{\\delta_1 \\rho_1 \\sigma_2} = U^{3\\beta}_{\\delta_1 \\rho_1} + \\frac{1}{8 \\pi 2} \\int^{\\alpha_2}_{\\alpha_2} d \\alpha^\\prime_2 \\left[\\frac{ U^{2\\beta}_{\\delta_1 \\rho_1} - \\alpha^\\prime_2U^{1\\beta}_{\\rho_1 \\sigma_2} }{U^{0\\beta}_{\\rho_1 \\sigma_2}}\\right]$"))
eqs.append((r"$\\frac{d\\rho}{d t} + \\rho \\vec{v}\\cdot\\nabla\\vec{v} = -\\nabla p + \\mu\\nabla^2 \\vec{v} + \\rho \\vec{g}$"))
eqs.append((r"$\\int_{-\\infty}^\\infty e^{-x^2}dx=\\sqrt{\\pi}$"))
eqs.append((r"$E = mc^2 = \\sqrt{{m_0}^2c^4 + p^2c^2}$"))
eqs.append((r"$F_G = G\\frac{m_1m_2}{r^2}$"))
plt.axes([0.025,0.025,0.95,0.95])
for i in range(24):
index = np.random.randint(0,len(eqs))
eq = eqs[index]
size = np.random.uniform(12,32)
x,y = np.random.uniform(0,1,2)
alpha = np.random.uniform(0.25,.75)
plt.text(x, y, eq, ha=\'center\', va=\'center\', color="#11557c", alpha=alpha,
transform=plt.gca().transAxes, fontsize=size, clip_on=True)
plt.xticks([]), plt.yticks([])
# savefig(\'../figures/text_ex.png\',dpi=48)
plt.show()
折线图
Axes3D.plot(xs, ys, *args, **kwargs)
Argument | Description |
---|---|
xs, ys | x, y coordinates of vertices |
zs | z value(s), either one for all points or one for each point. |
zdir | Which direction to use as z (‘x’, ‘y’ or ‘z’) when plotting a 2D set. |
`import` `matplotlib as mpl``from` `mpl_toolkits.mplot3d ``import` `Axes3D``import` `numpy as np``import` `matplotlib.pyplot as plt` `mpl.rcParams[``\'legend.fontsize\'``] ``=` `10` `fig ``=` `plt.figure()``ax ``=` `fig.gca(projection``=``\'3d\'``)``theta ``=` `np.linspace(``-``4` `*` `np.pi, ``4` `*` `np.pi, ``100``)``z ``=` `np.linspace(``-``2``, ``2``, ``100``)``r ``=` `z ``*``*` `2` `+` `1``x ``=` `r ``*` `np.sin(theta)``y ``=` `r ``*` `np.cos(theta)``ax.plot(x, y, z, label``=``\'parametric curve\'``)``ax.legend()` `plt.show()`
散点图
Axes3D.scatter
(xs, ys, zs=0, zdir=\'z\', s=20, c=None, depthshade=True, **args*, **kwargs)
Argument | Description |
---|---|
xs, ys | Positions of data points. |
zs | Either an array of the same length as xs and ys or a single value to place all points in the same plane. Default is 0. |
zdir | Which direction to use as z (‘x’, ‘y’ or ‘z’) when plotting a 2D set. |
s | Size in points^2. It is a scalar or an array of the same length as x and y. |
c | A color. c can be a single color format string, or a sequence of color specifications of length N, or a sequence of Nnumbers to be mapped to colors using the cmap and norm specified via kwargs (see below). Note that c should not be a single numeric RGB or RGBA sequence because that is indistinguishable from an array of values to be colormapped. ccan be a 2-D array in which the rows are RGB or RGBA, however, including the case of a single row to specify the same color for all points. |
depthshade | Whether or not to shade the scatter markers to give the appearance of depth. Default is True. |
`from` `mpl_toolkits.mplot3d ``import` `Axes3D``import` `matplotlib.pyplot as plt``import` `numpy as np` `def` `randrange(n, vmin, vmax):`` ``\'\'\'`` ``Helper function to make an array of random numbers having shape (n, )`` ``with each number distributed Uniform(vmin, vmax).`` ``\'\'\'`` ``return` `(vmax ``-` `vmin) ``*` `np.random.rand(n) ``+` `vmin` `fig ``=` `plt.figure()``ax ``=` `fig.add_subplot(``111``, projection``=``\'3d\'``)` `n ``=` `100` `# For each set of style and range settings, plot n random points in the box``# defined by x in [23, 32], y in [0, 100], z in [zlow, zhigh].``for` `c, m, zlow, zhigh ``in` `[(``\'r\'``, ``\'o\'``, ``-``50``, ``-``25``), (``\'b\'``, ``\'^\'``, ``-``30``, ``-``5``)]:`` ``xs ``=` `randrange(n, ``23``, ``32``)`` ``ys ``=` `randrange(n, ``0``, ``100``)`` ``zs ``=` `randrange(n, zlow, zhigh)`` ``ax.scatter(xs, ys, zs, c``=``c, marker``=``m)` `ax.set_xlabel(``\'X Label\'``)``ax.set_ylabel(``\'Y Label\'``)``ax.set_zlabel(``\'Z Label\'``)` `plt.show()`
线框图
Axes3D.plot_wireframe
(X, Y, Z, **args*, **kwargs)
Argument | Description |
---|---|
X, Y, | Data values as 2D arrays |
Z | |
rstride | Array row stride (step size), defaults to 1 |
cstride | Array column stride (step size), defaults to 1 |
rcount | Use at most this many rows, defaults to 50 |
ccount | Use at most this many columns, defaults to 50 |
`from` `mpl_toolkits.mplot3d ``import` `axes3d``import` `matplotlib.pyplot as plt` `fig ``=` `plt.figure()``ax ``=` `fig.add_subplot(``111``, projection``=``\'3d\'``)` `# Grab some test data.``X, Y, Z ``=` `axes3d.get_test_data(``0.05``)` `# Plot a basic wireframe.``ax.plot_wireframe(X, Y, Z, rstride``=``10``, cstride``=``10``)` `plt.show()`
表面图
Axes3D.``plot_surface
(X, Y, Z, **args*, **kwargs)
Argument | Description |
---|---|
X, Y, Z | Data values as 2D arrays |
rstride | Array row stride (step size) |
cstride | Array column stride (step size) |
rcount | Use at most this many rows, defaults to 50 |
ccount | Use at most this many columns, defaults to 50 |
color | Color of the surface patches |
cmap | A colormap for the surface patches. |
facecolors | Face colors for the individual patches |
norm | An instance of Normalize to map values to colors |
vmin | Minimum value to map |
vmax | Maximum value to map |
shade | Whether to shade the facecolors |
`from` `mpl_toolkits.mplot3d ``import` `Axes3D``import` `matplotlib.pyplot as plt``from` `matplotlib ``import` `cm``from` `matplotlib.ticker ``import` `LinearLocator, FormatStrFormatter``import` `numpy as np` `fig ``=` `plt.figure()``ax ``=` `fig.gca(projection``=``\'3d\'``)` `# Make data.``X ``=` `np.arange(``-``5``, ``5``, ``0.25``)``Y ``=` `np.arange(``-``5``, ``5``, ``0.25``)``X, Y ``=` `np.meshgrid(X, Y)``R ``=` `np.sqrt(X ``*``*` `2` `+` `Y ``*``*` `2``)``Z ``=` `np.sin(R)` `# Plot the surface.``surf ``=` `ax.plot_surface(X, Y, Z, cmap``=``cm.coolwarm,`` ``linewidth``=``0``, antialiased``=``False``)` `# Customize the z axis.``ax.set_zlim(``-``1.01``, ``1.01``)``ax.zaxis.set_major_locator(LinearLocator(``10``))``ax.zaxis.set_major_formatter(FormatStrFormatter(``\'%.02f\'``))` `# Add a color bar which maps values to colors.``fig.colorbar(surf, shrink``=``0.5``, aspect``=``5``)` `plt.show()`
柱状图
Axes3D.``bar
(left, height, zs=0, zdir=\'z\', **args*, **kwargs)
Argument | Description |
---|---|
left | The x coordinates of the left sides of the bars. |
height | The height of the bars. |
zs | Z coordinate of bars, if one value is specified they will all be placed at the same z. |
zdir | Which direction to use as z (‘x’, ‘y’ or ‘z’) when plotting a 2D set. |
`from` `mpl_toolkits.mplot3d ``import` `Axes3D``import` `matplotlib.pyplot as plt``import` `numpy as np` `fig ``=` `plt.figure()``ax ``=` `fig.add_subplot(``111``, projection``=``\'3d\'``)``for` `c, z ``in` `zip``([``\'r\'``, ``\'g\'``, ``\'b\'``, ``\'y\'``], [``30``, ``20``, ``10``, ``0``]):`` ``xs ``=` `np.arange(``20``)`` ``ys ``=` `np.random.rand(``20``)` ` ``# You can provide either a single color or an array. To demonstrate this,`` ``# the first bar of each set will be colored cyan.`` ``cs ``=` `[c] ``*` `len``(xs)`` ``cs[``0``] ``=` `\'c\'`` ``ax.bar(xs, ys, zs``=``z, zdir``=``\'y\'``, color``=``cs, alpha``=``0.8``)` `ax.set_xlabel(``\'X\'``)``ax.set_ylabel(``\'Y\'``)``ax.set_zlabel(``\'Z\'``)` `plt.show()`
箭头图
Axes3D.``quiver
(**args*, **kwargs)
Arguments:
X, Y, Z:
The x, y and z coordinates of the arrow locations (default is tail of arrow; see pivot kwarg)
U, V, W:
The x, y and z components of the arrow vectors
`from` `mpl_toolkits.mplot3d ``import` `axes3d``import` `matplotlib.pyplot as plt``import` `numpy as np` `fig ``=` `plt.figure()``ax ``=` `fig.gca(projection``=``\'3d\'``)` `# Make the grid``x, y, z ``=` `np.meshgrid(np.arange(``-``0.8``, ``1``, ``0.2``),`` ``np.arange(``-``0.8``, ``1``, ``0.2``),`` ``np.arange(``-``0.8``, ``1``, ``0.8``))` `# Make the direction data for the arrows``u ``=` `np.sin(np.pi ``*` `x) ``*` `np.cos(np.pi ``*` `y) ``*` `np.cos(np.pi ``*` `z)``v ``=` `-``np.cos(np.pi ``*` `x) ``*` `np.sin(np.pi ``*` `y) ``*` `np.cos(np.pi ``*` `z)``w ``=` `(np.sqrt(``2.0` `/` `3.0``) ``*` `np.cos(np.pi ``*` `x) ``*` `np.cos(np.pi ``*` `y) ``*`` ``np.sin(np.pi ``*` `z))` `ax.quiver(x, y, z, u, v, w, length``=``0.1``, normalize``=``True``)` `plt.show()`
2D转3D图
`from` `mpl_toolkits.mplot3d ``import` `Axes3D``import` `numpy as np``import` `matplotlib.pyplot as plt` `fig ``=` `plt.figure()``ax ``=` `fig.gca(projection``=``\'3d\'``)` `# Plot a sin curve using the x and y axes.``x ``=` `np.linspace(``0``, ``1``, ``100``)``y ``=` `np.sin(x ``*` `2` `*` `np.pi) ``/` `2` `+` `0.5``ax.plot(x, y, zs``=``0``, zdir``=``\'z\'``, label``=``\'curve in (x,y)\'``)` `# Plot scatterplot data (20 2D points per colour) on the x and z axes.``colors ``=` `(``\'r\'``, ``\'g\'``, ``\'b\'``, ``\'k\'``)``x ``=` `np.random.sample(``20` `*` `len``(colors))``y ``=` `np.random.sample(``20` `*` `len``(colors))``labels ``=` `np.random.randint(``3``, size``=``80``)` `# By using zdir=\'y\', the y value of these points is fixed to the zs value 0``# and the (x,y) points are plotted on the x and z axes.``ax.scatter(x, y, zs``=``0``, zdir``=``\'y\'``, c``=``labels, label``=``\'points in (x,z)\'``)` `# Make legend, set axes limits and labels``ax.legend()``ax.set_xlim(``0``, ``1``)``ax.set_ylim(``0``, ``1``)``ax.set_zlim(``0``, ``1``)``ax.set_xlabel(``\'X\'``)``ax.set_ylabel(``\'Y\'``)``ax.set_zlabel(``\'Z\'``)` `# Customize the view angle so it\'s easier to see that the scatter points lie``# on the plane y=0``ax.view_init(elev``=``20.``, azim``=``-``35``)` `plt.show()`
文本图
`from` `mpl_toolkits.mplot3d ``import` `Axes3D``import` `matplotlib.pyplot as plt` `fig ``=` `plt.figure()``ax ``=` `fig.gca(projection``=``\'3d\'``)` `# Demo 1: zdir``zdirs ``=` `(``None``, ``\'x\'``, ``\'y\'``, ``\'z\'``, (``1``, ``1``, ``0``), (``1``, ``1``, ``1``))``xs ``=` `(``1``, ``4``, ``4``, ``9``, ``4``, ``1``)``ys ``=` `(``2``, ``5``, ``8``, ``10``, ``1``, ``2``)``zs ``=` `(``10``, ``3``, ``8``, ``9``, ``1``, ``8``)` `for` `zdir, x, y, z ``in` `zip``(zdirs, xs, ys, zs):`` ``label ``=` `\'(%d, %d, %d), dir=%s\'` `%` `(x, y, z, zdir)`` ``ax.text(x, y, z, label, zdir)` `# Demo 2: color``ax.text(``9``, ``0``, ``0``, ``"red"``, color``=``\'red\'``)` `# Demo 3: text2D``# Placement 0, 0 would be the bottom left, 1, 1 would be the top right.``ax.text2D(``0.05``, ``0.95``, ``"2D Text"``, transform``=``ax.transAxes)` `# Tweaking display region and labels``ax.set_xlim(``0``, ``10``)``ax.set_ylim(``0``, ``10``)``ax.set_zlim(``0``, ``10``)``ax.set_xlabel(``\'X axis\'``)``ax.set_ylabel(``\'Y axis\'``)``ax.set_zlabel(``\'Z axis\'``)` `plt.show()`
3D拼图
`import` `matplotlib.pyplot as plt``from` `mpl_toolkits.mplot3d.axes3d ``import` `Axes3D, get_test_data``from` `matplotlib ``import` `cm``import` `numpy as np` `# set up a figure twice as wide as it is tall``fig ``=` `plt.figure(figsize``=``plt.figaspect(``0.5``))` `# ===============``# First subplot``# ===============``# set up the axes for the first plot``ax ``=` `fig.add_subplot(``1``, ``2``, ``1``, projection``=``\'3d\'``)` `# plot a 3D surface like in the example mplot3d/surface3d_demo``X ``=` `np.arange(``-``5``, ``5``, ``0.25``)``Y ``=` `np.arange(``-``5``, ``5``, ``0.25``)``X, Y ``=` `np.meshgrid(X, Y)``R ``=` `np.sqrt(X ``*``*` `2` `+` `Y ``*``*` `2``)``Z ``=` `np.sin(R)``surf ``=` `ax.plot_surface(X, Y, Z, rstride``=``1``, cstride``=``1``, cmap``=``cm.coolwarm,`` ``linewidth``=``0``, antialiased``=``False``)``ax.set_zlim(``-``1.01``, ``1.01``)``fig.colorbar(surf, shrink``=``0.5``, aspect``=``10``)` `# ===============``# Second subplot``# ===============``# set up the axes for the second plot``ax ``=` `fig.add_subplot(``1``, ``2``, ``2``, projection``=``\'3d\'``)` `# plot a 3D wireframe like in the example mplot3d/wire3d_demo``X, Y, Z ``=` `get_test_data(``0.05``)``ax.plot_wireframe(X, Y, Z, rstride``=``10``, cstride``=``10``)` `plt.show()`