gpt4 book ai didi

python - 使用函数和循环创建子图

转载 作者:行者123 更新时间:2023-12-03 08:18:03 30 4
gpt4 key购买 nike

我有一个很好的函数,可以用两条线绘制一个图……它本身就可以很好地工作。然而,我想运行它 4 次以制作 2row x 2col 子图。我找不到一种好方法来多次运行该函数并将每个函数添加到子图中。

import matplotlib.pyplot as plt

patient = [['P1', [1,6,12,18,24], [15,17,16,19,15]],
['P2', [1,6,12,18,24], [12,13,17,18,18]],
['P3', [1,6,12,18,24], [19,19,12,11,9]],
['P4', [1,6,12,18,24], [8,7,3,12,15]]]

def plot_graph(patient):
name = patient[0]
X = patient[1]
Y = patient[2]

fig, ax = plt.subplots()

#first line
ax.plot([X[0],X[-1]],[Y[0],Y[-1]+20], marker='o', label='Line 1')

#second line
ax.plot(X,Y,marker='o',label='Line 2')

#axis settings
ax.set_ylim([0,80])
ax.invert_yaxis()
ax.set_title('My Graph')
for x,y in zip(X,Y): ax.annotate(y,(x,y-4))
ax.legend(loc=8)


plot_graph(patient[0])

plt.show()

最佳答案

  • 删除 fig, ax = plt.subplots() 并向函数添加 ax 参数
  • 迭代函数外部的子图。
    • .flattenaxes(2, 2) 转换为 (4, ) 数组,不过,这更容易迭代。
def plot_graph(data, ax):
name = data[0]
X = data[1]
Y = data[2]

#first line
ax.plot([X[0],X[-1]],[Y[0],Y[-1]+20], marker='o', label='Line 1')

#second line
ax.plot(X,Y,marker='o',label='Line 2')

#axis settings
ax.set_ylim([0,80])
ax.invert_yaxis()
ax.set_title('My Graph')
for x,y in zip(X,Y): ax.annotate(y,(x,y-4))
ax.legend(loc=8)


fig, axes = plt.subplots(2, 2, figsize=(10, 8))
axes = axes.flatten()

for i, axe in enumerate(axes):
plot_graph(data=patient[i], ax=axe)

enter image description here

关于python - 使用函数和循环创建子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68720116/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com