matplotlib: inset Achsen für mehrere boxplots

Habe ich ein paar boxplots in matplotlib, dass ich möchte, um den zoom auf einen bestimmten y-Bereich ([0,0.1]) mit inset-Achsen. Es ist mir nicht klar aus der Beispiel in der Dokumentation, wie ich das machen soll dies für mehrere boxplots auf der gleichen Abbildung. Ich habe versucht, ändern Sie den code in diesem Beispiel, aber es war zu viel unnötige Komplexität. Mein code ist ziemlich einfach:

# dataToPlot is a list of lists, containing some data. 
plt.figure()
plt.boxplot(dataToPlot)
plt.savefig( 'image.jpeg', bbox_inches=0)

Wie füge ich Einschub Achsen und zoom-in auf die erste boxplot der beiden? Wie kann ich es machen für beide?

EDIT: ich habe versucht den code unter, aber hier ist was ich habe:
matplotlib: inset Achsen für mehrere boxplots

Was ging schief?

# what's the meaning of these two parameters?
fig = plt.figure(1, [5,4])
# what does 111 mean?
ax = fig.add_subplot(111)
ax.boxplot(data)
# ax.set_xlim(0,21)  # done automatically based on the no. of samples, right?
# ax.set_ylim(0,300) # done automatically based on max value in my samples, right?
# Create the zoomed axes
axins = zoomed_inset_axes(ax, 6, loc=1) # zoom = 6, location = 1 (upper right)
axins.boxplot(data)
# sub region of the original image
#here I am selecting the first boxplot by choosing appropriate values for x1 and x2 
# on the y-axis, I'm selecting the range which I want to zoom in, right?
x1, x2, y1, y2 = 0.9, 1.1, 0.0, 0.01
axins.set_xlim(x1, x2)
axins.set_ylim(y1, y2)
# even though it's false, I still see all numbers on both axes, how do I remove them?
plt.xticks(visible=False)
plt.yticks(visible=False)
# draw a bbox of the region of the inset axes in the parent axes and
# connecting lines between the bbox and the inset axes area
# what are fc and ec here? where do loc1 and loc2 come from?
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")
plt.savefig( 'img.jpeg', bbox_inches=0)
  • Ich bin mir nicht sicher, ich weiß was du meinst mit "mehrere boxplots auf der gleichen Figur". Haben Sie mehrere Nebenhandlungen?
  • Nein, dataToPlot enthält mehr als eine Probe der Daten, und plt.boxplot behandelt es als solche: es zieht so viele boxplots, da gibt es Beispiele in Ihrem Eingang.
  • So, können Sie nicht einfach tun, eine weitere axins=zoomed_inset_axes(ax,6,loc=2) und setzen unterschiedliche Koordinaten-Palette für das nächste Parzelle?
  • Ich bin nicht die Einstellung der position der einzelnen boxplots, also ich weiß nicht, wo Sie erscheinen genau. Oder bin ich etwas fehlt?
  • Vielleicht habe ich nicht genau weiß, was deine Frage ist... wollen Sie, um den Bereich der zoom-plots automatisch, anstatt explizit die Eingabe der yrange?
  • Auch imshow ist für ein Bild Plotten. Ist das wirklich das, was Sie wollen?
  • Ok, tut mir Leid. Ich wollte hinzufügen, eine box für jedes boxplot mit einer Zoom-in-Ansicht auf eine bestimmte y-Achsen-Bereich. Ich dachte, ich könnte dies tun, mit eingesetzten Achsen. Kann Ich?
  • lassen Sie uns weiter, diese Diskussion im chat
  • der fc ist so etwas wie der "Vordergrundfarbe". Zum Beispiel, wenn er auf "k" wird das Feld zeigt den gezoomten Bereich im ursprünglichen plot völlig schwarz, nicht sehr sinnvoll 🙂 der Einstellung "none" macht es transparent, so dass die ursprünglichen Daten sind noch sichtbar.

Schreibe einen Kommentar