Matplotlib可视化指导手册

matplotlib 安装配置

linux可以通过以下方式安装matplotlib

sudo pip install numpysudo pip install scipysudo pip install matplotlib

windows墙裂推荐大家使用anaconda

可视化图的基本结构

通常,使用 numpy 组织数据, 使用 matplotlib API 进行数据图像绘制。 一幅数据图基本上包括如下结构:

  • Data: 数据区,包括数据点、描绘形状
  • Axis: 坐标轴,包括 X 轴、 Y 轴及其标签、刻度尺及其标签
  • Title: 标题,数据图的描述
  • Legend: 图例,区分图中包含的多种曲线或不同分类的数据

其他的还有图形文本 (Text)、注解 (Annotate)等其他描述

Matplotlib可视化指导手册

绘图流程

下面以常规图为例,详细记录作图流程及技巧。按照绘图结构,可将数据图的绘制分为如下几个步骤:

  • 导入 matplotlib 包相关工具包
  • 准备数据,numpy 数组存储
  • 绘制原始曲线
  • 配置标题、坐标轴、刻度、图例
  • 添加文字说明、注解
  • 显示、保存绘图结果

下面是一个包含cos、sin、sqrt函数的完整图像:

Matplotlib可视化指导手册
  • 导入库
import numpy as npimport matplotlib.pyplot as plt
  • 导入数据
x = np.arange(0., 10, 0.2)y1 = np.cos(x)y2 = np.sin(x)y3 = np.sqrt(x)
  • 绘制基本曲线

使用 plot 函数直接绘制上述函数曲线,可以通过配置 plot 函数参数调整曲线的样式、粗细、颜色、标记等:

plt.plot(x, y1, color='blue', linewidth=1.5, linestyle='-', marker='.')plt.plot(x, y2, color='green', linewidth=1.5, linestyle='-', marker='*')plt.plot(x, y3, color='m', linewidth=1.5, linestyle='-', marker='x')
Matplotlib可视化指导手册
  • 设置坐标
# 坐标轴上移ax = plt.subplot(111)ax.spines['right'].set_color('none')  # 去掉右边的边框线ax.spines['top'].set_color('none')  # 去掉上边的边框线# 移动下边边框线,相当于移动 X 轴ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data', 0))# 移动左边边框线,相当于移动 y 轴ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data', 0))
Matplotlib可视化指导手册
  • 设置坐标轴取值范围
# 设置 x, y 轴的取值范围plt.xlim(x.min() * 1.1, x.max() * 1.1)plt.ylim(-1.5, 4.0)# 设置 x, y 轴的刻度值plt.xticks([2, 4, 6, 8, 10], [r'2', r'4', r'6', r'8', r'10'])plt.yticks([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0],           [r'-1.0', r'0.0', r'1.0', r'2.0', r'3.0', r'4.0'])
Matplotlib可视化指导手册
  • 设置标题和轴标签
# 设置标题、x轴、y轴plt.title(r'$the \ function \ figure \ of \ cos(), \ sin() \ and \ sqrt()$', fontsize=19)plt.xlabel(r'$the \ input \ value \ of \ x$', fontsize=18, labelpad=88.8)plt.ylabel(r'$y = f(x)$', fontsize=18, labelpad=12.5)
Matplotlib可视化指导手册
  • 设置文字描述、注解
# 添加文字plt.text(4, 1.68, r'$x \in [0.0, \ 10.0]$', color='k', fontsize=15)plt.text(4, 1.38, r'$y \in [-1.0, \ 4.0]$', color='k', fontsize=15)# 特殊点添加注解plt.scatter([8, ], [np.sqrt(8), ], 50, color='m')  # 使用散点图放大当前点plt.annotate(r'$2\sqrt{2}$', xy=(8, np.sqrt(8)), xytext=(8.5, 2.2), fontsize=16, color='#090909',             arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=0.1', color='#090909'))
Matplotlib可视化指导手册
  • 增加图例
# 设置图例及位置plt.legend(loc='upper left')plt.legend(['cos(x)', 'sin(x)', 'sqrt(x)'], loc='upper left')
Matplotlib可视化指导手册
  • 显示网格线
# 显示网格线plt.grid(True)
Matplotlib可视化指导手册
  • 保存/显示图像
# 保存图片plt.savefig('foo.png')# 显示绘图plt.show()

plt.plot(x, y1, color='blue', linewidth=1.5, linestyle='-', marker='.')

  • 颜色参数color

主要是color参数:r 红色、g 绿色、b 蓝色、c cyan、m 紫色、y 土黄色、k 黑色、w 白色

Matplotlib可视化指导手册
  • 线条类型参数linestyle

linestyle 参数主要包含虚线、点化虚线、粗虚线、实线

Matplotlib可视化指导手册
  • 标记参数marker

marker参数设定在曲线上标记的特殊符号,以区分不同的线段。常见的形状及表示符号如下图所示:

Matplotlib可视化指导手册
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容