标签归档:matplotlib

matplotlib绘图实例

感觉matplotlib还是比gnuplot等要好用一些。虽然以后并非一定不用gnuplot画图,但目前还是优先把matplotlib搞熟练。不过说实话,画图这事情其实不难。麻烦的是画出想要的各种样式的细节。所以我是一方面熟练用matplotlib画出图,另一方面也是想整理出一些习惯的样式。因为我有点想重复造个轮子(不是),写一个Fortran调用Python绘图的库。方便我的程序计算完成后直接绘出图,并且可以相对自动化地调整所需的样式。所以在这里整理一些常用的解决方案。

函数图像

import numpy as np
import matplotlib.pyplot as plt

def func(x):
  return np.exp(-np.sqrt(x))

x = np.linspace(1, 5, 81)
# x = np.arange(1, 5.05, 0.05)

fig, ax = plt.subplots()
ax.plot(x, func(x), '-', label='exp(-sqrt(x))')
plt.legend()
plt.show()

继续阅读matplotlib绘图实例

matplotlib绘制等高线图的几个细节

由于毕业课题涉及到绘制复合物相互作用能的势能面,所以我为了绘制得到较美观的势能面等高线图而仔细看了matplotlibcontourf函数的手册。

实际上一开始是想用gnuplot画图的,但我需要绘制的势能面有一个挺麻烦的特征:其数值的范围非常大。也就是在两个分子靠得比较近的较小的区域里,相互作用能的数值大约为几万(正值,是一种互相排斥的状态);而在两个分子远离的较大区域内,此时作用很弱,因此数值接近零。这种情况下,gnuplot在没有其他设置(我不太清楚是否真的有相关的选项)的情况下绘制出的图效果很不好。
继续阅读matplotlib绘制等高线图的几个细节