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()
运行效果
是不是超级好看!一开始我也被经验到了,几行简单的代码,就能有这么好看的图形!
代码分析
- 到了科学计算这里,非常依赖扩展包,这里用的是 matplotlib.pyplot,这是画图里面最简单的一个模块了,也因此只能画二维图
-
import numpy as np
, 里面用到了numpy内置的三角函数 - 计算机画图,从来都不是真正的连续作图,而是通过取样数据点,然后由于数据点取得足够密,看起来是连续的而已。这里的关键操作是
x = np.linspace(0, 10, 1000)
, 把区间等分成1000份 - 画图最基本的语法,
plt.plot(自变量数组,因变量数组,[这里填充各种设置参数])
, 把图变得好看,就是在“[ ]”填入各种设置参数,不过,只要放进自变量数组和因变量数组,就可以画出图来了。参数设置仔细研究上面的例子 - !!!(敲黑板的重点)
plt.show()
, 最后的show() 函数一定要调用,不然是什么也不会出现的。
小结
今天这个小例子,算是Python科学计算入门了。下一篇博客,会给大家介绍用Python解ODE方程——一个弹簧振子,另外加上PID控制,超级有趣~