Matplotlib 两个子图显示

来分析怎么样实现两个子图显示的功能。Matplotlib 嵌套子图显示是实现一个子图的功能,不知道你学会了没有,如果没有,赶紧看前文,这样比较地看才会更加深刻,更加容易懂。

好吧,先来看本文实现的结果,如下图:

Matplotlib 两个子图显示

在这里使用绘图的数据,还是像前文一样,使用正态分布生成的数据,同样的一份数据,在三个图里实现绘制。绿色的是第一个子图,蓝色的是第二个子图,红色的是主图。三个图形使用的数据是一样的,所以绘制起的曲线形状是一样的。当然,一般来说使用嵌套子图,往往是实现不同角度,不同的分析方法来进行对比,或者细节数据的呈现。

fig = plt.figure() #创建子图

这行代码是实现创建一个窗口的画布。



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

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

这两行代码与前面一样,采用正态分布来产生数据,不过这里产生了100个数据点。

ax1 = fig.add_axes([0.1,0.1,0.8,0.8])

ax1.plot(x,y,'r')

ax1.set_xlabel("x")

ax1.set_ylabel("y")

ax1.set_title('title main')

这段代码是实现主图的绘制,add_axes()函数定义了主图在整个画布里位置,离左边10%,离上部10%,离下边和右边都是20%的位置。然后调用函数plot进行画曲线,颜色为红色。set_xlabel(“x”)是设置X轴的标记,set_ylabel(“y”)是设置Y轴的标记,set_title(‘title main’)是设置标题显示。

接着下来就是绘第一个子图:

#子图1

ax2 = fig.add_axes([0.2,0.6,0.25,0.25])

ax2.plot(x,y,'g')

ax2.set_xlabel('x')

ax2.set_ylabel('y')

ax2.set_title('title inside1')

第一行代码add_axes()方法通过相对位置增加子图,接着调用plot(x,y,’g’)来绘子图,其它是设置子图的X轴和Y轴的标记,以及子图的标题。

最后来绘制第二个子图,这个要特别注意了,因为它的实现方式有点不一样。

#子图2

plt.axes([0.6,0.2,0.25,0.25])

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

plt.xlabel('x')

plt.ylabel('y')

plt.title('title inside2')

这里通过调用plt.axes([0.6,0.2,0.25,0.25])来增加一个子图,然后调用plt.plot(x, y, ls = ‘-‘, lw = 2, color = ‘b’)来绘曲线,其它子图的X轴和Y轴的标记,以及子图的标题。

总结一下,这里最不一样的地方,是绘制第二个子图的方式,并不是使用第一个子图相同的代码,这样理解起来就有点困难了,不过只要学习过一遍,就不会搞错它了。

整个例子的代码如下:

import numpy as np
import matplotlib.pyplot as plt

#
fig = plt.figure()  #创建子图
#
x = np.linspace(1, 100, 100)
y = np.random.normal(75.0, 15.0, 100)

#主图
ax1 = fig.add_axes([0.1,0.1,0.8,0.8])
ax1.plot(x,y,'r')
ax1.set_xlabel("x")
ax1.set_ylabel("y")
ax1.set_title('title main')

#子图1
ax2 = fig.add_axes([0.2,0.6,0.25,0.25])
ax2.plot(x,y,'g')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title inside1')

#子图2
plt.axes([0.6,0.2,0.25,0.25])
plt.plot(x, y, ls = '-', lw = 2, color = 'b')
plt.xlabel('x')
plt.ylabel('y')
plt.title('title inside2')

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

评论 抢沙发

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