上回继续

一、多张图布局(subplot)

1.1 subplot布局方式

import matplotlib.pyplot as plt

plt.figure()

plt.subplot(3, 2, 1)  # 3行2列的第1张图
plt.plot([0, 1], [0, 1]) plt.subplot(322) # 等效于plt.subplot(2,2,2) 3行2列的第2张图
plt.plot([1, 1], [0, 2])
plt.plot([0, 2], [1, 1]) plt.subplot(3, 1, 2) # 3行1列的第"2"张图,3行1列的"前提"下,上面一行已占用了1个位置,所以这里是位置2
plt.scatter([0, 1, 2], [1, 1, 1], c="r", s=50) plt.subplot(3, 3, 7) # 第3行的第1张图,3行3列的"前提"下,前面二行,已经用掉了6个位置,所以这里是位置7
plt.plot([6, 9], [9, 6]) plt.subplot(3, 3, 8) # 第3行中间的位置
plt.plot([1, 2], [2, 2]) plt.subplot(3, 3, 9) # 第3行右侧的位置
plt.plot([1, 3], [2, 4]) plt.show()

上面演示的是“行合并”的布局示例,如果想要“列合并”的效果,参考下面的代码:

import matplotlib.pyplot as plt

plt.figure()

plt.subplot(2, 2, 1)  # 2行2列的位置1
plt.plot([0, 1], [0, 1])
plt.text(0.5, 0, "figure-1", ) plt.subplot(1, 2, 2) # 1行2列的位置2
plt.plot([0, 1], [0, 1])
plt.text(0.5, 0, "figure-2") plt.subplot(2, 2, 3) # 2行2列的位置3
plt.plot([0, 1], [0, 1])
plt.text(0.5, 0, "figure-3") plt.show()

1.2 subplot2grid布局方式

这种方式类似于网页制作中的table布局

import matplotlib.pyplot as plt

plt.figure()

ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)  # 3行3列, 第0行0列,合并3列
ax1.text(0.5, 0.5, r"$ax-1$") ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2) # 3行3列, 第1行0列(即:第二行最左边的位置),合并2列
ax2.text(0.5, 0.5, r"$ax-2$") ax3 = plt.subplot2grid((3, 3), (2, 0)) # 3行3列, 第1行0列(即:第三行第1个位置)
ax3.text(0.5, 0.5, r"$ax-3$") ax4 = plt.subplot2grid((3, 3), (2, 1)) # 3行3列, 第2行1列(即:第三行第2个位置)
ax4.text(0.5, 0.5, r"$ax-4$") ax5 = plt.subplot2grid((3, 3), (1, 2), rowspan=2) # 3行3列, 第1行2列(即:第二行第3个位置),跨2行
ax5.text(0.5, 0.5, r"$ax-5$") plt.show()

1.3 gridspec布局方式

这与1.2很类似,只是换一个写法而已

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec gs = gridspec.GridSpec(3, 3) # 定义3行3列的网络
ax1 = plt.subplot(gs[0:1, 0:3]) # 第0行,[0,3)之间的列合并
ax1.text(0.5, 0.5, r"$ax-1$") ax2 = plt.subplot(gs[1, :-1]) # 第1行,[0,倒数第1列]之间的列合并
ax2.text(0.5, 0.5, r"$ax-2$") ax3 = plt.subplot(gs[2, 0]) # 第2行,第0列
ax3.text(0.5, 0.5, r"$ax-3$") ax4 = plt.subplot(gs[2, 1]) # 第2行,第1列
ax4.text(0.5, 0.5, r"$ax-4$") ax5 = plt.subplot(gs[1:0, 2]) # [1,最后1列]行合并,第2列
ax5.text(0.5, 0.5, r"$ax-5$") plt.show()

二、柱状图

import matplotlib.pyplot as plt
import numpy as np X = [1, 2, 3, 4]
Y1 = [1000, 1500, 1200, 1800]
Y2 = np.array(Y1) * (-1) plt.bar(X, Y1, 0.4, color="green", label="label1")
plt.bar(X, Y2, 0.4, color="orange", label="label2") plt.xticks(X) ax1 = plt.gca()
ax1.set_xticklabels(["Q1", "Q2", "Q3", "Q4"])
ax1.spines['top'].set_color('none')
ax1.spines['right'].set_color('none') ax1.spines['bottom'].set_position(('data', 0)) plt.legend() plt.show()

三、3D图

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y) Z = np.sin(X) + np.cos(Y) fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.viridis) plt.show()

  

Matplotlib新手上路(中)的更多相关文章

  1. Matplotlib新手上路(下)

    接上篇继续,这次来演示下如何做动画,以及加载图片 一.动画图 import numpy as np import matplotlib.pyplot as plt import matplotlib. ...

  2. Matplotlib新手上路(上)

    matplotlib是python里用于绘图的专用包,功能十分强大.下面介绍一些最基本的用法: 一.最基本的划线 先来一个简单的示例,代码如下,已经加了注释: import matplotlib.py ...

  3. php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28

    php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28 话说,嗯嗯,就是我自己说,做事认真要用表格,学习技 ...

  4. OpenGL教程之新手上路

    Jeff Molofee(NeHe)的OpenGL教程- 新手上路 译者的话:NeHe的教程一共同拥有30多课,内容翔实,而且不断更新 .国内的站点实在应该向他们学习.令人吃惊的是,NeHe提供的例程 ...

  5. webpack4配置详解之新手上路初探

    前言 经常会有群友问起webpack.react.redux.甚至create-react-app配置等等方面的问题,有些是我也不懂的,慢慢从大家的相互交流中,也学到了不少. ​ 今天就尝试着一起来聊 ...

  6. Dart语言快速学习上手(新手上路)

    Dart语言快速学习上手(新手上路) // 声明返回值 int add(int a, int b) { return a + b; } // 不声明返回值 add2(int a, int b) { r ...

  7. 转-spring-boot 注解配置mybatis+druid(新手上路)-http://blog.csdn.net/sinat_36203615/article/details/53759935

    spring-boot 注解配置mybatis+druid(新手上路) 转载 2016年12月20日 10:17:17 标签: sprinb-boot / mybatis / druid 10475 ...

  8. 活字格企业 Web 应用生成器新手上路指南

    活字格是一款企业 Web 应用生成器,使用了类 Excel 的设计界面,通过简单的拖拽操作,就能快速制作出一个 Web 信息管理系统.在整个使用过程中无需专业软件知识,没有任何技术门槛,能轻松实现各行 ...

  9. 新手上路——it人如何保持竞争力

    新手上路——如何保持竞争力 JINGZHENGLI 套用葛大爷的一句名言:21世纪什么最贵,人才.哪你是人才还是人材?还是人财或人裁?相信大家都不是最后一种.何如保持住这个光环呢?就需要我们保持我们独 ...

随机推荐

  1. javascript NaN注意事项

    NaN直译是Not a number NaN是个特殊的number,它和任何值相比都不相等,甚至和它自己. NaN === NaN 这个表达式是false 唯一能判断NaN的方法是 IsNaN(NaN ...

  2. 测试开发之前端——No6.HTML5中的键盘事件

    键盘事件 由键盘触发的事件. 适用于所有 HTML 5 元素: 属性 值 描述 onkeydown script 当按下按键时运行脚本 onkeypress script 当按下并松开按键时运行脚本 ...

  3. confusion_matrix(混淆矩阵)

    作者:十岁的小男孩 凡心所向,素履可往 目录 监督学习—混淆矩阵 是什么?有什么用?怎么用? 非监督学习—匹配矩阵 混淆矩阵 矩阵每一列代表预测值,每一行代表的是实际的类别.这个名字来源于它可以非常容 ...

  4. this和判断的位置对赋值的要求

    package charter01; public class Person { private String name; private int age; public String getName ...

  5. 使用jdk中提供的排序方式

    package com.bjpowernode.t01; import java.util.Arrays; /** * 使用jdk中提供的排序方式 * */public class TestArray ...

  6. windows下安装GIT,使用GIT GUI 上传文件到github

    安装 1.从官网 https://git-scm.com/download/win下载安装包 2.打开安装包安装,点击next,接着再点击三次next 3.在下拉菜单中选择已安装的文本编辑器,点击ne ...

  7. mysql中delete from in子查询删除失败

    遇到一个情况,想通过表1的id找到表2,删除表2中barcode关联的库存数据,然后一直不能失败,如下: delete from 库存表 where BARCODE in( select BARCOD ...

  8. 第一个Struts2实例之hello world!

    Struts官网:http://struts.apache.org/ Struts2框架预先实现了一些功能    1:请求数据自动封装    2:文件上传的功能    3:对国际化功能的简化    4 ...

  9. vtiger7安装设置

    安装界面一直报错 其实是设置的问题 error_reporting:E_WARNING & ~E_NOTICE & ~E_DEPRECATED max_execution_time:6 ...

  10. BZOJ1040 [ZJOI2008]骑士 基环树林(环套树) 树形动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题意概括 有n个人,每一个人有一个最恨的人. 并且,每一个人有一个权值. 一个人不可以和他最恨的人同时被选中. 现在请你求出在 ...