Python科学计算学习:从入门到放弃系列(1)用matplotlib画简单的二维图

科学计算学习·总序

终于终于来到了这一步,Python的一大重要应用领域在于科学计算,而正是博主所需要具备的能力。学习教材强推张若愚的《Python科学计算(第二版)》。这本书包含的内容很广,每个知识点配备一个具体的例子,非常好上手,可以作为手册,有需要的时候,随时查阅。接下来的系列,学习路线主要会依据这本书。

前言

工欲善其事必先利其器,这句话真的很有道理。刻画物理演化过程的方程,均是微分方程,于是,要了解研究对象的演化过程,我们就需要会解这些微分方程(组)。计算机解微分方程(组),主要用的是数值解法(现实中太多问题没有解析解),而数值解法,结果是给出一系列时间点系统的状态值,这时候,如果我们仅是看这些数值点,很难看出背后更深层次的物理意义。于是,科学绘图就出现了。比如我们研究的对象,是一个小球在平面内的来回碰撞,这时候,画成一个图(甚至动画)展示出来,结果一目了然。
本篇是科学计算的一篇,先从最简单的二维画图开始(因为复杂的现在我也不会啊……)

实例代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2019-04-09 20:21:42
# @Author  : Promise ([email protected])
# @Link    : ${link}
# @Version : $Id$

import matplotlib.pyplot as plt
import numpy as np


x = np.linspace(0, 10, 1000)
y = np.sin(x)
z = np.cos(x*x)

plt.figure(figsize=(8, 4))  # 创建图表对象,大小为8*4 英寸

plt.plot(x, y, label='$sin(x)$', color='red', linewidth=2)
plt.plot(x, z, 'b--', label='$cos(x^2)$')

plt.xlabel('Time(s)')
plt.ylabel('Volt')
plt.title('Pyplot First Example')
plt.ylim(-1.2, 1.2)
plt.legend()

plt.show()

运行效果

Python科学计算学习:从入门到放弃系列(1)用matplotlib画简单的二维图

是不是超级好看!一开始我也被经验到了,几行简单的代码,就能有这么好看的图形!

代码分析

  1. 到了科学计算这里,非常依赖扩展包,这里用的是 matplotlib.pyplot,这是画图里面最简单的一个模块了,也因此只能画二维图
  2. import numpy as np, 里面用到了numpy内置的三角函数
  3. 计算机画图,从来都不是真正的连续作图,而是通过取样数据点,然后由于数据点取得足够密,看起来是连续的而已。这里的关键操作是x = np.linspace(0, 10, 1000), 把区间(0,10)(0, 10)等分成1000份
  4. 画图最基本的语法,plt.plot(自变量数组,因变量数组,[这里填充各种设置参数]), 把图变得好看,就是在“[ ]”填入各种设置参数,不过,只要放进自变量数组和因变量数组,就可以画出图来了。参数设置仔细研究上面的例子
  5. !!!(敲黑板的重点)plt.show(), 最后的show() 函数一定要调用,不然是什么也不会出现的。

小结

今天这个小例子,算是Python科学计算入门了。下一篇博客,会给大家介绍用Python解ODE方程——一个弹簧振子,另外加上PID控制,超级有趣~