0

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()

Temp showing up instead of EPPM eppm_showing_up_with weird formatting

r-beginners
  • 31,170
  • 3
  • 14
  • 32

1 Answers1

1

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()

enter image description here

r-beginners
  • 31,170
  • 3
  • 14
  • 32