I have been running into an issue where matplotlib pie is replacing my last value of subplot text with actual plot title. Could anyone tell me why i am facing the issue and how to overcome it?
keep_list_tt = [6.012, 2.734, 2.76, 4.585, 4.19]
eppm_plot = [0, 771, 830, 919, 1097]
all_test_tt = [31.344, 31.344, 31.344, 31.344, 31.344]
always_failing_list_tt = [0.112, 0.112, 0.112, 0.112, 0.112]
always_failing_list_tt = [23.203, 23.203, 23.203, 23.203, 23.203]
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1,len(keep_list_tt), figsize=(30,8))
labels = ["always_failing_list_tt", "always_passing_list_tt", "keep_list_tt","remove_list_tt"]
explode = (0.2, 0,0.1,0.1)
for i in range(len(keep_list_tt)):
eppm_pie_plot = [always_failing_list_tt[i],always_passing_list_tt[i],keep_list_tt[i],round(np.subtract(all_test_tt[i],np.add(keep_list_tt[i],np.add(always_failing_list_tt[i],always_passing_list_tt[i]))),3)]
pie = axs[i].pie(eppm_pie_plot, explode=explode,autopct="")
axs[i].set_title("EPPM is - {}".format(eppm_plot[i]))
for j, a in enumerate(pie[2]):
a.set_text("{}".format(eppm_pie_plot[j]))
plt.legend(labels,bbox_to_anchor=(1.1,0.5) )
plt.axis('equal')
plt.title ("Temp")
plt.show()
The issue seems to be caused by the fact that plt.axis('equal')
is applied only to the last graph outside the loop process. Please move that code inside the loop. And while you're at it, optimize the way the graph is looped.
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1,len(keep_list_tt), figsize=(30,8))
labels = ["always_failing_list_tt", "always_passing_list_tt", "keep_list_tt","remove_list_tt"]
explode = (0.2, 0,0.1,0.1)
for i, ax in enumerate(fig.axes):
eppm_pie_plot = [always_failing_list_tt[i],always_passing_list_tt[i],keep_list_tt[i],round(np.subtract(all_test_tt[i],np.add(keep_list_tt[i],np.add(always_failing_list_tt[i],always_passing_list_tt[i]))),3)]
pie = ax.pie(eppm_pie_plot, explode=explode, autopct="")
ax.set_title("EPPM is - {}".format(eppm_plot[i]))
ax.axis('equal')
for j, a in enumerate(pie[2]):
a.set_text("{}".format(eppm_pie_plot[j]))
plt.legend(labels, bbox_to_anchor=(1.1,0.5))
#plt.axis('equal')
fig.suptitle("Temp")
plt.show()