上回继续

一、多张图布局(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. elasticsearch5.0.1安装 marvel 插件

    elasticsearch5.0.1安装 marvel 插件 1.在elasticsearch上安装x-pach插件 在elasticsearch的根目录(每个节点),运行 bin/elasticse ...

  2. python在windows下安装

    打开python官方网站:https://www.python.org/downloads/ 点击下载 翻到底下的file目录下 选择对应的32,64位系统进行安装 一般来说选择Windows x86 ...

  3. C#面向对象(继承的重载和构造函数)

    构造函数: 继承的重载:

  4. VIM 键盘符号

    :h key-notation //查询键盘符号说明<>> 等于shift + > % 是跳到对应的括号 x 是删除当前字符,即右括号 '' 是跳回左括号 x 删除左括号

  5. 步步为营-10-string的简单操作

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  6. 彻底解决:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1

    转载:https://blog.csdn.net/qq_31122833/article/details/83992085

  7. Linux 僵尸进程的筛选和查杀

    一.筛选 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 二.查杀 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' ...

  8. Matrix Power Series POJ3233

    递推思想  先放着 见 https://www.cnblogs.com/jackge/p/3147604.html

  9. 如何查看Unity的版本

    打开Unity,Help->About Unity

  10. JVM GC-----3、垃圾标记算法(二)

    在上一篇文章中,介绍了在GC机制中,GC是以什么标准判定对象可以被标记的,以及最有效最常用的可达性分析法.今天介绍另外一种非常常用的标记算法,它的应用面也相当广泛.这就是:引用计数法 Referenc ...