Matplotlib 嵌套子图显示

随着技术的进步,大家要求的水平也越来越高,比如看一个问题,不再从一个角度去分析问题,而是要求从多个角度来分析问题。同理,当你在写论文时,也需要让数据从多个角度来分析,多个角度来显示同一个数据,这样才会更全面地解析问题的本质,以及发现新的理论。又或者老师想让一个数据展示给学生看,也需要从多个方面来显示数据的属性。从一些有名专家论文里,经常看到配图里有嵌套子图的显示,看到这些图时,对问题的理解非常有帮助,能够很全面地解析所需要说明的问题。

如果让你来做一些论文的配图,需要使用嵌套子图来实现,你又会做了吗?

好吧,现在还不会不要紧,赶紧跟着本文来学会,将来一定会轻松地解决的。

比如实现像下面的插图:

Matplotlib 嵌套子图显示

在这个绘图里,首先主图里显示一条曲线,接着在主图里左上角显示了该曲线的直方图,通过两个绘图,就可以理解曲线的形状,以及那些点分布的频率问题。

要理解这些功能的实现,需要详细地分析代码的实现:



fig, host = plt.subplots() #创建子图

host.grid(False)

这两行是创建一个子图,以及把子图的网格线关闭掉。

x = np.linspace(1, 100, 200)

y = np.random.normal(75.0, 15.0, 200)

前面一行代码是把1到100的区间分割出200个点,形成X轴的坐标;接着第二行代码调用正态分布函数,生成200个数据,均值为75,标准差为15,形成Y轴的数据。

host.plot(x, y, ls = '-', lw = 2, color = 'b')

host.set_ylim(10, 170)

接着把x和y数据显示出来,指定线的类型ls为实线,线的宽度lw为2个像素点,颜色为蓝色。同时把Y轴的显示范围限制为10到170之间。

plt.axes([0.2, 0.6, 0.2, 0.2], facecolor = 'k')

这行代码是构造一个嵌套的子图,调用axes来创建一个新坐标系,位置由列表[0.2, 0.6, 0.2, 0.2],前景颜色为黑色,k是表示黑色。

count, bins, patchs = plt.hist(y, 20, color = 'r')

这行代码是调用计算直接方图,并且在嵌套子图里绘制出来,分为20个小方格,颜色使用红色。

plt.ylim(0, 28)

这行代码是设置嵌套子图的Y轴显示范围为0到28.

plt.xticks([])

plt.yticks([])

这两行代码是去掉子图里的X轴和Y轴的刻度线。

通过上面简单的代码,就可以实现嵌套子图的实现了,看起也不是很难的事情,你学会了吗?

整个例子完整的代码如下:

import numpy as np
import matplotlib.pyplot as plt

#
fig, host = plt.subplots()  #创建子图
host.grid(False)

#
x = np.linspace(1, 100, 200)
y = np.random.normal(75.0, 15.0, 200)

host.plot(x, y, ls = '-', lw = 2, color = 'b')
host.set_ylim(10, 170)

#
plt.axes([0.2, 0.6, 0.2, 0.2], facecolor = 'k')
count, bins, patchs = plt.hist(y, 20, color = 'r')
plt.ylim(0, 28)
plt.xticks([])
plt.yticks([])

plt.show()
赞(0)
未经允许不得转载:极客笔记 » Matplotlib 嵌套子图显示
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址