Python matplotlib 绘图 1 - 介绍 matplotlib
2017-08-09
1. 什么是 matplotlib
Matplotlib 是一个 Python 2D 绘图库,它支持多样化的图像输出格式,可以方便的画出各种统计图形,比如散点图,条行图,饼图等。 它既可以在 Python 脚本和交互环境中使用,也可以在 IPython shell/jupyter notebook/web 中使用
1.1 工具集合
Matplotlib 有一些附加工具集,例如:
工具 | 功能 |
---|---|
Basemap | Matplotlib 的子包,可以绘制地图。可视化数据,如在地图上画出城市人口,用户访问密度,挖掘数据内部信息。 |
cartopy | 被设计用来更容易绘制地图数据,可视化数据信息进行数据分析的包 |
mplot3d | 绘制 3d 图形,创建 3d 图形的 2d 投影 |
seaborn | 统计数据可视化库 |
ggplot | 更高层的用最少的代码快速绘制图形的库 |
2.1 Linux,Mac OSX,Windows 都可以使用 pip 安装
pip install matplotlib
2.2 Linux 也可以使用包管理工具安装
在主要的 Linux 发行版的包管理器,都可以直接安装 matplotlib 和相关工具
- Debian / Ubuntu : sudo apt-get install python-matplotlib
- Fedora / Redhat : sudo yum install python-matplotlib
2.3 The Continuum.io Python 发行版
安装 Anaconda 或者 miniconda 后包含 matplotlib 库
- tk,pyqt,pygtk,wxpython 可以提供给用户 GUI 界面接口
- ffmpeg/avconv 或者 mencoder,视频动画需要
- ImageMagick,gif 动画需要
3. 程序示例
3.1 绘制简单折线图
#!/usr/bin/env python
# coding: utf-8
"""
========================================================
绘制简单折线图
========================================================
演示使用 matplotlib 绘图
"""
import numpy as np
import matplotlib
# 强制不适用任何 Xwindows 后端,必须在 导入 pyplot 之前调用
matplotlib.use('Agg')
import matplotlib.pyplot as plt
def main():
squares = np.random.rand(10)
# 绘制折线
plt.plot(squares)
# 存储绘制的折线图
plt.savefig('./sample1.png')
if __name__ == '__main__':
main()
绘制出来的折线图
这个例子演示如何通过路径绘制连在一起的矩形 """
import numpy as np import matplotlib
强制不适用任何 Xwindows 后端,必须在 导入 pyplot 之前调用
matplotlib.use(‘Agg’)
import matplotlib.pyplot as plt import matplotlib.patches as patches import matplotlib.path as path
def main(): # 创建一个绘图区域 fig, ax = plt.subplots()
# 使用 numpy 创建柱状图数据
data = np.random.randn(1000)
n, bins = np.histogram(data, 50)
# 计算每个图的左右顶底
left = np.array(bins[:-1])
right = np.array(bins[1:])
bottom = np.zeros(len(left))
top = bottom + n
# 通过转置得到每个图的坐标
XY = np.array([[left, left, right, right], [bottom, top, top, bottom]]).T
# 设置路径
barpath = path.Path.make_compound_path_from_polys(XY)
# 添加路径到绘图区域
patch = patches.PathPatch(barpath)
ax.add_patch(patch)
# 设置图形x,y限制
ax.set_xlim(left[0], right[-1])
ax.set_ylim(bottom.min(), top.max())
# 保存图形文件
plt.savefig('./sample2.png')
if name == ‘main’: main()
绘制出来的直方图
![](/img/ar/org/ed/7e/d6cef56d163afb7f4203248c79077eed.png)