在循环中更改 imshow 子图的背景颜色

时间:2021-06-18 11:36:18

标签: python matplotlib plot data-visualization

我以下列方式循环绘制图像:

imshow()

我想根据特定条件更改每个图的背景颜色(正如您可能已经猜到的,当预测是否等于基本事实时)。

我尝试在 if classes[int(pred[i][0])] == classes[int(batchy[i])]: plt.gcf().set_facecolor("green") else: plt.gcf().set_facecolor("red") 之前的循环中添加它:

plt.gcf()

但是,只有最后一个 plt.show() 调用会被考虑,因为当 <div class="fieldcontainer"> <input oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" type="number" class="mts-field" maxlength="4" id="tdee" name"tdee" placeholder="Inserisci il tuo TDEE" form="fbday" required autocomplete="off"/> <label>Spesa calorica</label> </div> <div class="container_level"> <select class="target" id="target_select" form="fbday" name="target"> <option value="0">Stile di vita / Attività fisica</option> <option id="mass1" name="radsa" value="5">mass1</option> <option id="mass2" name="radsa" value="10">mass2</option> <option id="mass3" name="radsa" value="15">mass3</option> <option id="def1" name="radsa" value="10">def1</option> <option id="def2" name="radsa" value="15">def2</option> <option id="def3" name="radsa" value="20">def3</option> </select> </div> <!---Fabbisogno Giornaliero---> <div id="fbbday0" class="results" hidden> <input type="text" form="fbday" class="result-field" id="dayli_intake_mass" name="dayli_intake" placeholder="Fabbisogno giornaliero / 0.000 Kcal" min="1" readonly/> <label class="mts-label"></label> </div> <div id="fbbday1" class="results" hidden> <input type="text" form="fbday" class="result-field" id="dayli_intake_def" name="dayli_intake" placeholder="Fabbisogno giornaliero / 0.000 Kcal" min="1" readonly/> <label class="mts-label"></label> </div> <form action="" id="fbday"> </form> <button name="calculate" onclick="calculate()">Calculate</button> <button id="reset" onclick="resetFields()">Reset</button> 运行时,它会查看颜色设置,使所有背景变为绿色或红色。

我还能通过什么其他方式实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以使用 subplots() 并遍历 Axes,以最终显示所有带有正确背景颜色的图。

fig, axs = plt.subplots(8,4, figsize=(20, 35))
# Flattens the Axes grid to more easily iterate
axs = axs.flatten()
# You must make sure that len(axes) >= len(batchX) (and batchy)
for i, X in enumerate(batchX):
    ax = axs[i]
    ax.set_title("IMG{} - Pred: {},  GT: {}".format(i+1, classes[int(pred[i][0])],\
        classes[int(batchy[i])]))
    if classes[int(pred[i][0])] == classes[int(batchy[i])]:
        ax.set_facecolor("green")
    else:
        ax.set_facecolor("red")
    ax.imshow(X)

plt.tight_layout()
plt.show()
相关问题