如何将Hypertools绘图嵌入Matplotlib子图网格中?
把Hypertools绘图整合到Matplotlib子图网格里
我来给你一步步拆解实现方法,亲测好用:
先搭建Matplotlib子图框架
先用matplotlib.pyplot.subplots()创建你想要的子图网格,比如常见的2行2列布局,这会返回一个画布对象和轴对象数组,后续我们就把Hypertools的图绑定到这些轴上。
示例代码:import matplotlib.pyplot as plt import hypertools as hyp import numpy as np # 生成几组测试用的样本数据 data1 = np.random.randn(100, 3) data2 = np.random.randn(100, 3) data3 = np.random.randn(100, 3) data4 = np.random.randn(100, 3) # 创建2×2的子图网格,指定画布大小 fig, axes = plt.subplots(2, 2, figsize=(10, 8))把Hypertools绘图绑定到指定子图
这一步是关键!你只需要在调用hyp.plot()时,通过ax参数直接指定要使用的子图轴,再加上show=False阻止它单独弹出窗口,Hypertools就会把图画在你指定的子图位置里。
示例代码:# 给第一个子图绘图并加标题 hyp.plot(data1, show=False, ax=axes[0, 0]) axes[0, 0].set_title('第一组数据可视化') # 第二个子图 hyp.plot(data2, show=False, ax=axes[0, 1]) axes[0, 1].set_title('第二组数据可视化') # 第三个子图 hyp.plot(data3, show=False, ax=axes[1, 0]) axes[1, 0].set_title('第三组数据可视化') # 第四个子图 hyp.plot(data4, show=False, ax=axes[1, 1]) axes[1, 1].set_title('第四组数据可视化')调整布局并显示整体图形
最后调用plt.tight_layout()自动调整子图间距,避免标签、标题重叠,再用plt.show()把整个子图网格展示出来:plt.tight_layout() plt.show()
额外小技巧
如果你已经提前得到了DataGeometry对象(比如之前调用hyp.plot(data, show=False)返回的结果),也可以事后修改它的ax属性来绑定子图轴,再重新渲染:
# 先得到DataGeometry对象 dg = hyp.plot(data1, show=False) # 绑定到指定子图轴 dg.ax = axes[0,0] # 重新绘制 dg.plot()
这样就能完美把多个Hypertools绘图整合到Matplotlib的子图网格里,再也不会弹出独立窗口啦!
内容的提问来源于stack exchange,提问作者Daniel Mahler
相关产品推荐
相关产品推荐

