Opierając się na doskonałej odpowiedzi @ peeol , możesz również usunąć ramkę, wykonując czynność
for spine in plt.gca().spines.values():
spine.set_visible(False)
Aby podać przykład (cały przykład kodu można znaleźć na końcu tego postu), powiedzmy, że masz taki wykres słupkowy,
możesz usunąć ramkę za pomocą powyższych poleceń, a następnie zachować etykiety x-
i ytick
(wykres niepokazany) lub je również usunąć
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')
W takim przypadku można bezpośrednio oznaczyć pręty; ostateczna fabuła mogłaby wyglądać następująco (kod można znaleźć poniżej):
Oto cały kod, który jest niezbędny do wygenerowania wykresów:
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
xvals = list('ABCDE')
yvals = np.array(range(1, 6))
position = np.arange(len(xvals))
mybars = plt.bar(position, yvals, align='center', linewidth=0)
plt.xticks(position, xvals)
plt.title('My great data')
# plt.show()
# get rid of the frame
for spine in plt.gca().spines.values():
spine.set_visible(False)
# plt.show()
# remove all the ticks and directly label each bar with respective value
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')
# plt.show()
# direct label each bar with Y axis values
for bari in mybars:
height = bari.get_height()
plt.gca().text(bari.get_x() + bari.get_width()/2, bari.get_height()-0.2, str(int(height)),
ha='center', color='white', fontsize=15)
plt.show()
savefig
? (Jeśli tak, zastępuje to, co ustawiłeś podczas zapisywania rysunku.) Czy ręczne ustawieniefig.patch.set_visible(False)
działa?