Python+Matplotlib绘制动态爱心图

函数FuncAnimation(fig,func,frames,init_func,interval,blit)是绘制动图的主要函数,其参数如下:

  a.fig 绘制动图的画布名称

  b.func自定义动画函数,即下边程序定义的函数update

  c.frames动画长度,一次循环包含的帧数

  d.init_func自定义开始帧,即传入刚定义的函数init,初始化函数

  e.interval更新频率,以ms计

  f.blit选择更新所有点,还是仅更新产生变化的点。应选择True,但mac用户请选择False,否则无法显

代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
%matplotlib notebook
fig, ax = plt.subplots(dpi=72, figsize=(8,6))
alpha = 1 # 绘图函数参数

x = np.arange(-2,2,0.01) # 自变量取值范围
y = np.power(x**2,float(1/3)) + np.power(0.9*(3.3 - x**2),0.5)*np.sin(alpha*np.pi*x) # 函数表达式
line,  = ax.plot(x, y)

def update():
    global alpha
    alpha +=0.02    
def animate():
    update()
    y = np.power(x**2,float(1/3)) + np.power(0.9*(3.3 - x**2),0.5)*np.sin(alpha*np.pi*x)
    plt.cla() # 清除之前绘制的图像
    plt.rcParams["font.family"] = "FangSong"  # 支持中文显示
    plt.rcParams['axes.unicode_minus'] = False
    plt.ylim(-2, 3)  # Y轴取值范围
    plt.text(-1.5,3.2,r'$ f(x) = {x^{2/3}}$'+' + '+r'$(0.9(3.3-x^{2}))^{1/2} \sin(\alpha\pi x)$',size=20) # 函数表达式
    plt.text(-0.5, 3, r'$\alpha=$'+f'{alpha}',size=15) # 当前alpha值
    line,  = ax.plot(x, y) # 重新绘制
    return line

animation = animation.FuncAnimation(fig=fig,func=animate,
                                       frames=2, 
                                       init_func=animate,
                                       interval=1,
                                       blit=False)
# animation.save('sinx.gif', writer='imagemagick') # 保存动图
plt.show()

动态图某一帧:

 讲解视频:

【python+matplotlib绘制动态爱心图】 https://www.bilibili.com/video/BV1Tm4y1w7bn?share_source=copy_web&vd_source=d5936d3772cd8dd5f8843c76d3b9bae1

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 当然可以!MatplotlibPython中一个广泛使用的绘库,支持2D和3D形。下面是使用Matplotlib绘制3D形的示例代码: ```python import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 创建3D形 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 生成数据 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) # 绘制3D曲面 ax.plot_surface(x, y, z, cmap=plt.cm.coolwarm) # 设置坐标轴标签和标题 ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') plt.title('3D Plot Example') # 显示形 plt.show() ``` 这段代码将生成一个3D正弦曲面的形。希望这可以帮助你开始绘制你自己的3D形! ### 回答2: Python是一种高效而强大的编程语言,它提供了一系列优秀的库,可以方便地生成各种表和数据可视化,其中matplotlib就是其中一个非常不错的工具。通过Matplotlib库的mplot3d模块,我们可以使用Python创造性地绘制一个爱心形的3D。 步骤如下: 1. 先导入所需要的库。 ``` from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np ``` 2. 然后生成一个函数,该函数会代表基础曲面。 ``` def f(x,y): return np.sqrt(x ** 2 + y ** 2) ``` 3. 使用numpy库生成一个点集。 ``` x = np.linspace(-1,1,100) y = np.linspace(-1,1,100) x,y = np.meshgrid(x,y) z = f(x,y) ``` 4. 接下来绘制表,主要设定一些参数。包括: ``` fig = plt.figure() ax = fig.add_subplot(111,projection='3d') ``` 5. 对 x, y, z 三个坐标轴进行设置。 ``` ax.view_init(30,35) ax.set_xlabel('X Label') ax.set_ylabel('Y Label') ax.set_zlabel('Z Label') ``` 6. 最后可以将曲面与3D爱心形状进行融合。这里需要利用两个函数,即: ``` ax.plot_surface(x,y,z,cmap='coolwarm',alpha=0.5) #绘制曲面 x = np.linspace(-1,1,1000) y = np.linspace(-1,1,1000) x, y = np.meshgrid(x,y) z = np.zeros_like(x) z = np.power(x**2 + 0.25*y**2 + 0.35, 2) - x**2*z - (1/3)*y**2*z ax.plot_surface(x,y,z, color='red') #绘制爱心 ``` 7. 最后可以呈现最终的形。 ``` plt.show() ``` 这样,配合 PythonMatplotlib 库,利用简单的代码,就可以画出一个美观而通俗易懂的 3D 爱心表啦! ### 回答3: Python是一种流行的编程语言,具有广泛的应用,其中一种应用是数据可视化。Matplotlib是一个Python库,可用于绘制2D和3D形,包括折线、柱状、散点和等高线等。 在本例中,我们将使用Matplotlib中的3D形功能来绘制一个3D爱心。首先,我们需要导入必要的库: ``` import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt ``` 接下来,我们将定义函数来生成爱心的形状: ``` def love_heart(x, y, z): return (np.sin(x) * np.sqrt(np.abs(x)) + np.sin(y) * np.sqrt(np.abs(y))) / 2.5 - z ``` 该函数将根据x、y和z坐标生成爱心的形状。现在,我们可以生成x、y和z坐标的值: ``` x = np.linspace(-1, 1, 100) y = np.linspace(-1, 1, 100) z = np.linspace(-1, 1, 100) X, Y, Z = np.meshgrid(x, y, z) ``` 接下来,我们可以使用函数来计算每个坐标的值: ``` F = love_heart(X, Y, Z) ``` 现在我们有爱心的形状,可以创建3D形: ``` fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.set_xlim(-1, 1) ax.set_ylim(-1, 1) ax.set_zlim(-1, 1) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.PuRd) plt.show() ``` 这将创建一个3D形,其中的心形由红紫色着色。我们可以通过旋转形来查看不同的角度。最终效果如下所示: ![3d-love-heart](https://images.pexels.com/photos/270949/pexels-photo-270949.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940) 这就是使用Matplotlib库在Python绘制3D爱心的方法。通过修改函数的参数,我们可以创建不同形状的3D形。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

』探索『

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值