【python】matplotlib数据可视化(7)——图中图

如题所述

在matplotlib的世界里,figure和axes就如同艺术创作中的画布和画纸,figure是我们的画布,而axes则是其中的精细区域,它们之间的关系就如同画布上的多个独立画作。让我们通过两种方法来深入理解如何在figure中构建丰富的图中图效果。


方法一:灵活调整figure与axes


首先,我们从基础开始。创建一个figure对象,然后使用fig.add_axes方法添加小图。在下面的代码中,我们创建了一个大图(big axes):


import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
x = [1, 2, 3, 4, 5, 6, 7]
y = [1, 3, 4, 2, 9, 5, 6]
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8 # 从大图左下角10%位置开始,占据80%的宽度和高度
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y, 'r') # 红色线条
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title("big axes")
为了展示大图与小图的对比,我们将大图左起点的位置调整到0.5:
left, bottom, width, height = 0.5, 0.1, 0.8, 0.8
接着,我们创建了一个小图(little1),它位于大图右侧,占据1/4的画布空间:
y1 = [a * 2 for a in y] # 将y轴值放大2倍
left, bottom, width, height = 0.2, 0.6, 0.2, 0.2
ax2 = fig.add_axes([left, bottom, width, height])
ax2.plot(x1, y1, 'b')
ax2.set_title('little1')
最后,通过plt.show()展示我们的图中图效果。

现在,大图与小图并列呈现,形成了直观的图中图布局。


方法二:更简洁的添加小图


另一种创建图中图的方法是利用plt.axes()函数,它更简洁易用。让我们用这种方法创建一个额外的小图(little axes2):


plt.axes([0.6, 0.1, 0.2, 0.2]) # 小图3,位置设定
plt.plot(x1, y1, 'y') # 黄色线条
plt.title('little axes2')
这种方法直接在figure中添加小图,无需提前创建大图,展示了matplotlib的灵活性。

通过以上两种方法,你已经掌握了在matplotlib中创建和布局图中图的基本技巧。现在,你可以自由发挥,创造出丰富的可视化效果,让数据的故事更加生动。

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜