" SuperAxis"在matplotlib子图中

时间:2017-05-21 22:55:35

标签: python matplotlib

我使用子图来评估某些条件,我用我的测试条件创建了两个数组,例如:

A=[ -2, -.1, .1, 2 ]
B=[ -4, -.2, .2, 4 ]

然后我在循环中评估它:

for i,a in enumerate(A):
    for j,b in enumerate(B):
        U_E[i][j]=u(t,b,a)

为了完成我的情节:

f, axarr = plt.subplots(len(A),len(B), sharex=True, sharey='row')
for i in range(len(A)):
    for j in range(len(B)):
        axarr[i, j].plot(t, U_E[i][j])

很好,我对此很满意。 :-)它类似于:

Matplotlib comparative matrix

但我希望将AB的值添加为" superaxis"快速查看每个情节BA

类似的东西:

Something like this

2 个答案:

答案 0 :(得分:3)

我建议使用axarr[i,j].text在每个子图中写入A和B参数:

for i in range(len(A)):
    for j in range(len(B)):
        axarr[i,j].plot(x, y*j) # just to make my subplots look different
        axarr[i,j].text(.5,.9,"A="+str(A[j])+";B="+str(B[i]), horizontalalignment='center', transform=axarr[i,j].transAxes)

plt.subplots_adjust(hspace=0,wspace=0)
plt.show()

transform=axarr[i,j].transAxes确保我们将坐标作为相对于每个轴的坐标:enter image description here

当然,如果你不认为解耦子图是你案例中可视化的一个大问题:

for i in range(len(A)):
for j in range(len(B)):
    axarr[i,j].plot(x, y*j)
    axarr[i,j].set_title("A="+str(A[i])+";B="+str(B[j]))

#plt.subplots_adjust(hspace=0,wspace=0)
plt.show()

enter image description here

答案 1 :(得分:2)

似乎你只想标记轴。这可以使用.set_xlabel().set_ylabel()完成。

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = 10,7

t = np.linspace(0,1)
u = lambda t, b,a : b*np.exp(-a*t)

A=[ -2, -.1, .1, 2 ]
B=[ -4, -.2, .2, 4 ]

f, axarr = plt.subplots(len(A),len(B), sharex=True, sharey='row')
plt.subplots_adjust(hspace=0,wspace=0)
for i in range(len(A)):
    axarr[i, 0].set_ylabel(A[i], fontsize=20, fontweight="bold")
    for j in range(len(B)):
        axarr[i, j].plot(t, u(t,B[j],A[i]))
        axarr[-1, j].set_xlabel(B[j],  fontsize=20,fontweight="bold")

plt.show()

enter image description here