python绘制直方图plt_Matplotlib:绘制多个直方图plt.子批次

这个要求非常严格,也许不是最好的设计选择。因为您以后想在一个子图的位置绘制多个子图,所以创建这个子图的唯一目的是在几分钟后死亡并被替换。在

因此,您可以获得传入轴的位置,并在该位置创建一个新的gridspec。然后删除原始轴,并在新创建的gridspec中创建一组新轴。在

下面就是一个例子。注意,它当前要求传入的轴是Subplot(与任何轴相反)。

它还将绘图的数量硬编码为2*2。在实际的用例中,您可能会从传入的model中获得该数字。在import matplotlib.pyplot as plt

import numpy as np

from matplotlib import gridspec

class ClassName():

def __init__(self, model, ax=None, **kwargs):

ax = ax or plt.gca()

if not hasattr(ax, "get_gridspec"):

raise ValueError("Axes needs to be a subplot")

parentgs = ax.get_gridspec()

q = ax.get_geometry()[-1]

# Geometry of subplots

m, n = 2, 2

gs = gridspec.GridSpecFromSubplotSpec(m,n, subplot_spec=parentgs[q-1])

fig = ax.figure

ax.remove()

self.axes = np.empty((m,n), dtype=object)

for i in range(m):

for j in range(n):

self.axes[i,j] = fig.add_subplot(gs[i,j], label=f"{i}{j}")

def plot(self, data):

for ax,d in zip(self.axes.flat, data):

ax.plot(d)

_, (ax,ax2) = plt.subplots(ncols=2)

cm = ClassName("mymodel", ax=ax2) # calling my class

cm.plot(np.random.rand(4,10))

plt.show()

b902Q.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值