python入门--动画,不是动画片!

sin曲线的动态绘制

开始讲一些动画喽,首先你得安装这个basemap库,作为一名初学者我也十分的惭愧,我用的anaconda3与VScode,前前后后为了安装这个库并且正常的运行它确实花费了不少功夫,查各种资料,具体操作由于本人技术不够硬就不献丑了,希望大家多参照其他大佬们的博客进行操作,祝大家顺利!以后我有能力与时间一定做一个实用的详细的操作方法,让大家少一些我操作时的迷茫,敬请期待哈~
这里我默认大家已经克服了种种困难并且调动自己灵活的大脑安装好了basemap,那么我们开始做动画吧!
下面我想做一个 sin函数曲线绘制的动画,不着急哈,我们一步一步来看:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap    # 导入地图库
from  matplotlib.animation import FuncAnimation   # 导入动画类
plt.rcParams['font.sans-serif']= ['SimHei']  # 正常显示中文
plt.rcParams['axes.unicode_minus'] = False   # 正常显示负号
fig= plt.figure(figsize = [8, 4])  # 创建图,必不可少的一步

# 定义动画更新函数:
def update(frame):
    x_max = 20  # x轴最大值
    x = np.linspace(0, min(frame*0.2, x_max), 100) # 通过min确保x取值范围不超过x最大值
    y = np.sin(x)
    plt.plot(x, y, 'b-')
    plt.axis([0, x_max, -2, 2])  # 设置坐标轴范围,注意不设置会导致坐标范围系统自己计算,从而引发抖动问题

# 生成动画对象
ani = FuncAnimation(fig, update, interval=100)  # 更新时间为100个千分之一秒    
plt.title('动画展示sin函数曲线')  # 设置标题
plt.show()

输出:

python入门--动画,不是动画片!_第1张图片

python入门--动画,不是动画片!_第2张图片

python入门--动画,不是动画片!_第3张图片
python入门--动画,不是动画片!_第4张图片
其实应该是动态的来着,但是展示给大家只能是几张连续图片啦。。
关于抖动问题:在绘图过程中伴随着计算的过程,x 轴为了适应当前数据会发生相应的变化,你还别说,挺有观赏效果呢~(狗头):

import numpy as np     
import matplotlib.pyplot as plt   
from mpl_toolkits.basemap import Basemap    
from  matplotlib.animation import FuncAnimation   
plt.rcParams['font.sans-serif']= ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
fig= plt.figure(figsize = [8, 4])
def update(frame):
    x_max = 360
    #这里我们让 x 最大值大一些,效果更佳明显
    x = np.linspace(0, min(frame*0.2, x_max), 100)
    y = np.sin(x)
    plt.plot(x, y, 'b-')
    ani = FuncAnimation(fig, update, interval=1)
    #速度的设置快一些,我不想等太久啊啊啊    
plt.title('动画展示sin函数曲线')
plt.show()

晒几张效果图:(运行过程截图。。)
python入门--动画,不是动画片!_第5张图片
python入门--动画,不是动画片!_第6张图片
python入门--动画,不是动画片!_第7张图片

python入门--动画,不是动画片!_第8张图片
python入门--动画,不是动画片!_第9张图片
。。。。。。(没错,我在等。。)
啊,可见我们的横坐标正在努力地向360靠近,这就是所谓的抖动啦
python正在努力:
python入门--动画,不是动画片!_第10张图片
等的同时,我们来个小插曲吧,画个世界地图:

from  mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
map = Basemap(projection = 'robin',lon_0=0,resolution='c')
#projection = 'robin':球形的的地球表面投影到平面地图
#lon_0=0:暂时不清楚!!(时间问题,欢迎补充,我会尽快补充的呜呜呜~)
#resolution='c':暂时不清楚!!
map.drawcoastlines(linewidth = 0.25)
#设置海岸线
map.drawcountries(linewidth = 0.25)
#设置国界线
map.drawmapboundary(fill_color=(0.8,0.95,1.0))
#设置地图边界,并设置背景颜色(海洋)(RGB)
map.fillcontinents(color=(1,0.9,0.7),lake_color=(0.8,0.95,1.0),zorder=0)
#zorder=0:图层在最底层
plt.show()

输出:
python入门--动画,不是动画片!_第11张图片
插曲结束。。
python入门--动画,不是动画片!_第12张图片
python:你想累死我????
加油!
python入门--动画,不是动画片!_第13张图片
电脑比较卡了哈哈哈。。
python入门--动画,不是动画片!_第14张图片
快了快了,电脑快死了。。
完成啦:
python入门--动画,不是动画片!_第15张图片
让python计算这样一个过程还是十分困难的,不过万幸我们得到了结果,耶,玩得开心。。。
To be continued…

你可能感兴趣的:(python学习,python)