for循环中函数的子图
Subplot from function in a for loop
我正在尝试生成一个带有我通过 seaborn 获得的热图的子图。当我尝试创建子图时,我得到一个带有三个空框的图形,然后是热图。我一直无法弄清楚如何将地图分配给盒子。这是我的代码:
def plot_cf_mat(matrix, save, figure_name):
fig, ax = plt.subplots()
ax = sns.heatmap(matrix/np.sum(matrix), annot=True, fmt = '.2%', cmap=sns.light_palette((.376, .051, .224)))
#ax.set_title('Confusion Matrix\n\n');
ax.set_xlabel('\nPredicted Values')
ax.set_ylabel('Actual Values ');
## Ticket labels - List must be in alphabetical order
ax.xaxis.set_ticklabels(['False','True'])
ax.yaxis.set_ticklabels(['False','True'])
if save:
plt.savefig("".join(["cf_mat_", figure_name, ".jpg"]), bbox_inches='tight')
return ax
#Plot
fig, axes = plt.subplots(1, 3)
i = 0
for row in axes:
fun.plot_cf_mat(matrix = cf_mat_x_clssifr[i][-1], save = False, figure_name = None)
i+=1
plt.show()
这是我得到的
您没有将创建的轴传递给您的函数或 sns.heatmap
。将行传递给您的函数(注意 ax=row
部分):
#Plot
fig, axes = plt.subplots(1, 3)
i = 0
for row in axes:
fun.plot_cf_mat(matrix = cf_mat_x_clssifr[i][-1], save = False, figure_name = None, ax=row)
i+=1
plt.show()
现在在该 ax 对象上绘制热图(注意函数中的 ax
参数并将对象传递给 sns.heatmap
):
def plot_cf_mat(matrix, save, figure_name, ax=None):
ax = ax or plt.gca()
# fig, ax = plt.subplots()
ax = sns.heatmap(matrix/np.sum(matrix), annot=True, fmt = '.2%', cmap=sns.light_palette((.376, .051, .224)), ax=ax)
我正在尝试生成一个带有我通过 seaborn 获得的热图的子图。当我尝试创建子图时,我得到一个带有三个空框的图形,然后是热图。我一直无法弄清楚如何将地图分配给盒子。这是我的代码:
def plot_cf_mat(matrix, save, figure_name):
fig, ax = plt.subplots()
ax = sns.heatmap(matrix/np.sum(matrix), annot=True, fmt = '.2%', cmap=sns.light_palette((.376, .051, .224)))
#ax.set_title('Confusion Matrix\n\n');
ax.set_xlabel('\nPredicted Values')
ax.set_ylabel('Actual Values ');
## Ticket labels - List must be in alphabetical order
ax.xaxis.set_ticklabels(['False','True'])
ax.yaxis.set_ticklabels(['False','True'])
if save:
plt.savefig("".join(["cf_mat_", figure_name, ".jpg"]), bbox_inches='tight')
return ax
#Plot
fig, axes = plt.subplots(1, 3)
i = 0
for row in axes:
fun.plot_cf_mat(matrix = cf_mat_x_clssifr[i][-1], save = False, figure_name = None)
i+=1
plt.show()
这是我得到的
您没有将创建的轴传递给您的函数或 sns.heatmap
。将行传递给您的函数(注意 ax=row
部分):
#Plot
fig, axes = plt.subplots(1, 3)
i = 0
for row in axes:
fun.plot_cf_mat(matrix = cf_mat_x_clssifr[i][-1], save = False, figure_name = None, ax=row)
i+=1
plt.show()
现在在该 ax 对象上绘制热图(注意函数中的 ax
参数并将对象传递给 sns.heatmap
):
def plot_cf_mat(matrix, save, figure_name, ax=None):
ax = ax or plt.gca()
# fig, ax = plt.subplots()
ax = sns.heatmap(matrix/np.sum(matrix), annot=True, fmt = '.2%', cmap=sns.light_palette((.376, .051, .224)), ax=ax)