2017-09-09 2 views
0

Ich würde gerne wissen, wie man scrollt (hoch/runter, links/rechts), während die Größe eines Darstellungsfensters mit pyplot imshow konstant bleibt.Schwenken auf pyplot imshow

Meine Idee ist es, ein großes numpy Array (Bild) zu nehmen, aber ich möchte nur einen kleinen Teil davon auf einmal zeigen. Es wäre perfekt, wenn ich einen Schwenkzeiger hinzufügen könnte, um mein Ansichtsfenster nach oben/unten/rechts/links zu schieben.

Irgendwelche Tipps?

+0

Matplotlib bietet standardmäßig Zoomen und Schwenken. Was genau ist das Problem der Verwendung? – ImportanceOfBeingErnest

+0

Ich weiß, dass Matplotlib solche Funktionalitäten bietet. Der Punkt ist, dass ich bei der Verwendung von "imshow" mit dem "großen Array" nicht die Details habe, die ich in Bezug auf den Zoom brauche, deshalb muss ich ein Viewport kleiner als das große Array einstellen und horizontal und vertikal entlang scrollen. –

+0

Und deshalb sollte ich mit der Anzeige einer dieser Regionen (zB Ansichtsfenster) beginnen, ohne das große Bild ohne Zoom zu zeigen. So kann der Benutzer keine Region zum Zoomen auswählen. –

Antwort

0

Um meine Kommentare in einer Antwort zu drehen:

Matplotlib die notwendigen Werkzeuge bietet standardmäßig die Handlung zu schwenken. Dies ist detailliert in der Interactive navigation article.

enter image description here Die Pan/Zoom-Taste
Diese Taste verfügt über zwei Modi: Schwenken und Zoomen. Klicken Sie auf die Schaltfläche in der Symbolleiste, um das Schwenken und Zoomen zu aktivieren. Bewegen Sie die Maus dann über eine Achse. Drücken Sie die linke Maustaste und halten Sie sie gedrückt, um die Figur zu verschieben und an eine neue Position zu ziehen. Wenn Sie es freigeben, werden die Daten unter dem Punkt, an dem Sie gedrückt haben, an den Punkt verschoben, an dem Sie sie freigegeben haben. Wenn Sie während des Verschiebens 'x' oder 'y' drücken, wird die Bewegung auf die x- bzw. y-Achse beschränkt. [...] Sie können die Zusatztasten 'x', 'y' oder 'CONTROL' verwenden, um den Zoom auf die x-Achse, die y-Achse bzw. das Seitenverhältnis beizubehalten.

enter image description here

die Achsen Begrenzung ist möglich z.B. über ax.set_xlim(xmin,xmax) und ax.set_ylim(ymin,ymax) oder über ax.axis([xmin,xmax,ymin,ymax]).

import numpy as np 
import matplotlib.pyplot as plt 

im = np.random.rand(600,800) 

plt.imshow(im) 
plt.gca().axis([200,300,150,250]) 

plt.show()