Einstellung der richtigen Grenzen mit imshow wenn Bilddaten Form ändert

Habe ich ein 3D-array, wobei die ersten zwei Dimensionen sind räumliche, also sagen wir (x,y). Die Dritte dimension enthält Punkt-spezifische Informationen.

print H.shape  # --> (200, 480, 640)  spatial extents (200,480)

Nun, durch Auswahl einer bestimmten Ebene in die Dritte dimension, ich kann ein Bild mit

imdat = H[:,:,100]    # shape (200, 480)
img = ax.imshow(imdat, cmap='jet',vmin=imdat.min(),vmax=imdat.max(), animated=True, aspect='equal')

Ich möchte jetzt drehen Sie den Würfel, so dass ich den Schalter aus (x,y) auf (y,x).

    H = np.rot90(H)          # could also use H.swapaxes(0,1) or H.transpose((1,0,2)) 
    print H.shape    # --> (480, 200, 640)

Nun, wenn ich rufe:

imdat = H[:,:,100]   # shape (480,200)
img.set_data(imdat)
ax.relim()
ax.autoscale_view(tight=True)

Ich merkwürdig zu Verhalten. Das Bild entlang der Zeilen zeigt die Daten bis zu 200-Reihe, und dann ist es schwarz, bis das Ende der y-Achse (480). Die x-Achse reicht von 0 bis 200 und zeigt die gedrehten Daten. Nun, eine weitere Drehung um 90 Grad, wird das Bild korrekt angezeigt (nur um 180 Grad gedreht natürlich)

Es scheint mir, wie nach dem drehen um die Daten, die Achse Grenzen, (oder image-Blöcke?) oder etwas ist nicht richtig erfrischend. Kann jemand helfen?

PS: zum verwöhnen in bad hacking, ich habe auch versucht zu regenerieren, ein neues Bild (durch Aufruf von ax.imshow) nach jeder Drehung, aber ich bekomme immer noch das gleiche Verhalten.

  • Können Sie einige Kontext? Da würde ich nur empfehlen, zeichnen ein neues Bild in einem separaten Bild. Wenn das unerwünscht ist, bitte angeben, warum.
  • Da bin ich überfragt. Ich vermutete, mussten Sie set_extent explizit nach jedem Anruf, die sollten auch an set_xlim, set_ylim, was es tut, aber ich kann nicht scheinen, um das gewünschte Verhalten, wenn ich dies tun.
InformationsquelleAutor achennu | 2011-09-15
Schreibe einen Kommentar