Ich bin derzeit mit einigen seltsamen Verhalten von Matplotlib beim Plotten mehrere Fehlerbalken mit verschiedenen y-Achsen in einem Teilplot.Matplotlib mehrere Gitter zorder nicht mit Fehlerbars arbeiten
Dabei überlappt das Raster, das dem zweiten Fehlerbalkenplot entspricht, immer den ersten Fehlerbalkenplot. Mit den Optionen zorder
konnte ich nur das andere Raster unterhalb der Fehlerbalken verschieben.
Ich möchte beide Gitter unter den zwei Fehlerbalken sein. Kennt jemand eine Lösung, oder ist das ein Fehler in Matplotlib?
Ich benutze Python 2.7.12 mit Matplotlib 1.5.1.
Minimal Arbeitsbeispiel:
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.colors as colors
# numbers of epochs
ttimes_means_list = [251.4, 153.3, 22.0, 202.1, 46.6]
ttimes_stddevs_list = [32.1, 35.1, 12.0, 84.9, 14.7]
# numbers of times
times_means_list = [5231, 3167, 860, 3932, 1244]
times_stddevs_list = [1381, 572, 253, 1445, 215]
labels = ['x1', 'x2', 'x3', 'x4', 'x5']
linewidth=3
xvalues = np.arange(0, len(times_means_list), 1)
xvalues_s = xvalues + 0.1
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()
ax1.set_ylabel('Number')
ax1.xaxis.grid(False)
ax1.yaxis.grid(True, color='navy', linewidth=linewidth/2.0)
ax2.xaxis.grid(False)
ax1.set_zorder(0)
ax2.set_zorder(0)
ax2.yaxis.grid(True, color='darkorange', linewidth=linewidth/2.0)
ax2.set_ylabel('Time')
ax1.set_xticks(xvalues)
ax2.set_xticks(xvalues)
ax1.set_xticklabels(labels)
ax2.set_xticklabels(labels)
ax1.set_xlabel('x label')
errplot1 = ax1.errorbar(xvalues, ttimes_means_list, yerr=ttimes_stddevs_list,
linestyle="None", elinewidth=linewidth, color='navy', label='Number',
capthick=linewidth, zorder=10)
errplot2 = ax2.errorbar(xvalues_s, times_means_list, yerr=times_stddevs_list,
linestyle="None", elinewidth=linewidth, color='darkorange',
label='Time', capthick=linewidth, zorder=10)
ax1.set_axisbelow(True)
ax2.set_axisbelow(True)
fig.legend((errplot1, errplot2), ('number', 'time'),
loc='upper right', numpoints=1)
plt.xlim(-0.5, len(times_means_list)-0.5)
plt.title('Some plot title')
plt.savefig('mwe_plot.pdf')
plt.clf()
Output plot (die orangefarbenen Rasterpunkte überschneiden sich die blauen Balken):
Vielen Dank! In der Tat hat dies das Problem gelöst. Ich habe gerade 'ax3.get_yaxis(). Set_visible (False)' hinzugefügt, um die zusätzlichen Bezeichnungen auf der rechten Seite loszuwerden. – ml4294
@ ml4294 Vielen Dank für Ihre Verbesserung! – xiaoyi