上回继续

一、多张图布局(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. CentOS 6.5环境使用ansible剧本自动化部署Corosync + pacemaker环境及corosync常用配置详解

    环境说明: 192.168.8.39 node2.chinasoft.com 192.168.8.42 node4.chinasoft.com 192.168.8.40 ansible管理服务器 19 ...

  2. Android系统信息(内存、cpu、sd卡、电量、版本)获取

    Android系统信息(内存.cpu.sd卡.电量.版本)获取 /*APPInfo.java*/ public class AppInfo { private String appLable; pri ...

  3. Ex 3_17 无穷路径..._十一次作业

    (a) Inf(p)在p中出现了无穷多次,说明Inf(p)存在一个环当中,所以这个环的顶点肯定是某一个强连通部件的子集. (b) 若G中存在一条无穷路径,则G中至少存在一个环,且这个环至少有两个顶点, ...

  4. 前端开发必须知道的JS之闭包及应用

    本文讲的是函数闭包,不涉及对象闭包(如用with实现).如果你觉得我说的有偏差,欢迎拍砖,欢迎指教. 在前端开发必须知道的JS之原型和继承一文中说过下面写篇闭包,加之最近越来越发现需要加强我的闭包应用 ...

  5. wpf 加阴影效果导致内容模糊的问题解决

    这个和GPU有关,参考地址 https://www.cplotts.com/2009/02/25/gpu-effects-blurry-text/ 产生问题的代码如下: <Window x:Cl ...

  6. [CodeChef]GERALD07/[JZOJ4739]Ztxz16学图论

    题解: 考虑从小到大枚举右端点 对于每个点,令它的权值等于它的编号 那么我们可以用lct维护出一颗最大生成树 维护方法是每次插入一条判断他们在不在一颗树上 若不在直接加,若在就找到链上的最小值 之后看 ...

  7. openstack学习-nove控制节点部署(四)

    nove在openstack非常重要,主要负责创建虚拟机 nova计算服务 API :负责接收和响应外部请求.支持openstack API,EC2 API Cert:负责身份认证EC 2 Sched ...

  8. UVA 11426 (欧拉函数&&递推)

    题意:给你一个数N,求N以内和N的最大公约数的和 解题思路: 一开始直接想暴力做,4000000的数据量肯定超时.之后学习了一些新的操作. 题目中所要我们求的是N内gcd之和,设s[n]=s[n-1] ...

  9. Mac电脑如何设置DHCP

    通过设置MAC电脑的DHCP服务器可以为局域网内的其它设备自动分配IP地址,还能把物理地址和IP地址绑定起来,限制IP地址的获取.   OS X 10.11或以上版本已内置DHCP服务器软件,即boo ...

  10. POJ-1511 Invitation Cards (单源最短路+逆向)

    <题目链接> 题目大意: 有向图,求从起点1到每个点的最短路然后再回到起点1的最短路之和. 解题分析: 在求每个点到1点的最短路径时,如果仅仅只是遍历每个点,对它们每一个都进行一次最短路算 ...