python三维图形等高线_Matplotlib绘图 - 动画,三维绘图​​,等高线图

索引内容动画---动画模块动画,FuncAnimation函数

dsafa

三维绘图--- Axes3D对象,plot_surface函数

等高线图--- contour函数,contourf函数

%matplotlib inline

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.animation as animation

1. 动画

Matplotlib提供了动画功能,有专门的动画模块。我们需要定义一个回调函数,用于定期更新屏幕上的内容。

fig = plt.figure()

ax = fig.add_subplot(111)

N = 10

x = np.random.rand(N)

y = np.random.rand(N)

z = np.random.rand(N)

circles, triangles, dots = ax.plot(x, 'ro', y, 'g^', z, 'b.')

ax.set_ylim(0,1)

plt.axis('off')

def update(data):

circles.set_ydata(data[0])

triangles.set_ydata(data[1])

return circles, triangles

def generate():

while True:

yield np.random.rand(2, N)

anim = animation.FuncAnimation(fig, update, generate, interval=500)

plt.show()

2. 三维绘图

对于3D作图,我们需要一个和三维投影相关的Axes3D对象。

绘制简单的三维函数z = x^2 = y^2

from mpl_toolkits.mplot3d import axes3d

from matplotlib import cm

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

# 使用meshgrid函数创建二维的坐标网络

u = np.linspace(-1,1,100)

x, y = np.meshgrid(u, u)

z = x**2 + y**2

# 指定行和列的步幅,以及绘制曲面所用的色彩表(color map)

ax.plot_surface(x, y, z, rstride=4, cstride=4, cmap=cm.rainbow_r)

plt.show()

3. 绘制等高线图

Matplotlib中的等高线3D绘图有两种风格,填充和非填充的。我们可以使用contour函数创建一般的等高线图。对于色彩填充的等高线图,可以使用contourf绘制。

fig = plt.figure(figsize=(3,5))

ax1 = fig.add_subplot(211)

ax2 = fig.add_subplot(212)

u = np.linspace(-1, 1, 100)

x, y = np.meshgrid(u, u)

z = x**2 + y**2

ax1.contour(x, y, z)

ax2.contourf(x, y, z)

plt.show()

4. 结合三维绘图和等高线图

fig = plt.figure()

ax = fig.gca(projection='3d')

X, Y, Z = axes3d.get_test_data(0.05)

ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3, cmap=cm.winter_r)

# 绘制等高线

cset = ax.contourf(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)

cset = ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)

cset = ax.contourf(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)

ax.set_xlabel('X')

ax.set_xlim(-40, 40)

ax.set_ylabel('Y')

ax.set_ylim(-40, 40)

ax.set_zlabel('Z')

ax.set_zlim(-100, 100)

plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,有很多库可以用来进行三维数据可视化,其中比较流行的包括: 1. MatplotlibMatplotlib是一个非常强大的绘图库,它支持二维和三维绘图,并且可以绘制各种类型的图表,包括散点图、直方图、曲线图、等高线图三维图等等。对于三维数据可视化,Matplotlib提供了mplot3d子包,可以用来创建各种类型的三维图表。 2. Mayavi:Mayavi是一个基于VTK(Visualization Toolkit)的三维数据可视化工具,它提供了各种高级的可视化技术,包括体绘制、等值面绘制、流线绘制、矢量绘制等等。Mayavi可以在Python中使用,并且可以与NumPy、SciPy等科学计算库无缝集成。 3. Plotly:Plotly是一个交互式可视化工具,它支持二维和三维绘图,并且提供了各种类型的图表,包括散点图、直方图、曲线图、等高线图三维图等等。Plotly可以在Python中使用,并且可以创建交互式图表,可以通过网页进行浏览、缩放、旋转等交互操作。 无论选择哪一个库,都需要先安装相应的库并了解其基本用法。以下是一些基本的代码示例: 使用Matplotlib绘制三维散点图: ```python 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') x = np.random.standard_normal(100) y = np.random.standard_normal(100) z = np.random.standard_normal(100) ax.scatter(x, y, z) plt.show() ``` 使用Mayavi绘制三维等值面图: ```python from mayavi import mlab import numpy as np def f(x, y, z): return np.sin(x**2 + y**2 + z**2) x, y, z = np.mgrid[-1:1:50j, -1:1:50j, -1:1:50j] s = mlab.contour3d(x, y, z, f, contours=10, opacity=0.5) mlab.show() ``` 使用Plotly绘制三维曲面图: ```python import plotly.graph_objs as go import numpy as np x, y = np.linspace(-5, 5, 50), np.linspace(-5, 5, 50) X, Y = np.meshgrid(x, y) Z = np.sin(np.sqrt(X**2 + Y**2)) fig = go.Figure(data=[go.Surface(x=X, y=Y, z=Z)]) fig.show() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值