博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Matplotlib新手上路(中)
阅读量:5280 次
发布时间:2019-06-14

本文共 2874 字,大约阅读时间需要 9 分钟。

接继续

一、多张图布局(subplot)

1.1 subplot布局方式

import matplotlib.pyplot as pltplt.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个位置,所以这里是位置2plt.scatter([0, 1, 2], [1, 1, 1], c="r", s=50)plt.subplot(3, 3, 7)  # 第3行的第1张图,3行3列的"前提"下,前面二行,已经用掉了6个位置,所以这里是位置7plt.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 pltplt.figure()plt.subplot(2, 2, 1)  # 2行2列的位置1plt.plot([0, 1], [0, 1])plt.text(0.5, 0, "figure-1", )plt.subplot(1, 2, 2)  # 1行2列的位置2plt.plot([0, 1], [0, 1])plt.text(0.5, 0, "figure-2")plt.subplot(2, 2, 3)  # 2行2列的位置3plt.plot([0, 1], [0, 1])plt.text(0.5, 0, "figure-3")plt.show()

 

1.2 subplot2grid布局方式 

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

import matplotlib.pyplot as pltplt.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 pltimport matplotlib.gridspec as gridspecgs = 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 pltimport numpy as npX = [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 pltimport numpy as npfrom matplotlib import cmfrom mpl_toolkits.mplot3d import Axes3DX = 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()

 

  

转载于:https://www.cnblogs.com/yjmyzz/p/matplotlib-tutorial-2.html

你可能感兴趣的文章
寄Android开发Gradle你需要知道的知识
查看>>
css & input type & search icon
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
0320-学习进度条
查看>>
MetaWeblog API Test
查看>>
移动、尺寸改变
查看>>
c# 文件笔记
查看>>
类和结构
查看>>
心得25--JDK新特性9-泛型1-加深介绍
查看>>
安装NVIDIA驱动时禁用自带nouveau驱动
查看>>
HDU-1255 覆盖的面积 (扫描线)
查看>>
Java 中 静态方法与非静态方法的区别
查看>>
Jenkins+ProGet+Windows Batch搭建全自动的内部包(NuGet)打包和推送及管理平台
查看>>
线程池的概念
查看>>
Java 序列化
查看>>
Java 时间处理实例
查看>>
Java 多线程编程
查看>>
Java 数组实例
查看>>
mysql启动过程
查看>>