Ho creato un grafico immagine con ax = imshow()
. ax
è un oggetto AxesImage, ma non riesco a trovare la funzione o l'attributo che ho bisogno di accedere per personalizzare le etichette di graduazione. Il ordinary pyplots sembra avere i metodi set_ticks
e set_ticklabels
, ma questi non sembrano essere disponibili per la classe AxesImage. Qualche idea? Grazie ~personalizza i segni di graduazione per AxesImage?
risposta
Per quello che vale, il gioco è un po 'equivoco quali imshow()
rendimenti, e come assi matplotlib sono strutturati in generale ...
Un oggetto AxesImage è responsabile per l'immagine visualizzata (ad esempio, mappe di colori, i dati, ecc.), ma non l'asse in cui risiede l'immagine. Non ha alcun controllo su cose come le zecche e le etichette di graduazione.
Quello che si desidera utilizzare è l'istanza dell'asse corrente.
È possibile accedere a questo con gca()
, se si utilizza l'interfaccia pylab
o matplotlib.pyplot.gca
se si accede a cose tramite Pyplot. Tuttavia, se si utilizza uno dei due, è disponibile una funzione xticks()
per ottenere/impostare le etichette e le posizioni xtick.
Per esempio (utilizzando pylab):
import pylab
pylab.figure()
pylab.plot(range(10))
pylab.xticks([2,3,4], ['a','b','c'])
pylab.show()
Utilizzando un approccio più orientato agli oggetti (su una nota a caso, getter e setter di matplotlib ottenere fastidioso in fretta ...):
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(1,1,1) # Or we could call plt.gca() later...
im = ax.imshow(np.random.random((10,10)))
ax.set_xticklabels(['a','b','c','d']) # Or we could use plt.xticks(...)
Spero che chiarisca un po 'le cose!
Sì! Grazie - mi aspettavo che fosse in qualche modo simile a matlab dove image() restituisce l'handle degli assi. Anche il nome dell'oggetto è un po 'fuorviante ... L'ho notato anche riguardo al getter/setter! In matlab spesso passo gli argomenti ai setter degli assi usando la notazione 'cellarray {:}' che sarebbe come la sintassi '* args' e' ** kwargs' di python, ma in questo caso non è così semplice (sebbene io sono sicuro che ci siano dei modi per aggirarlo). – hatmatrix