Si consideri il seguente codice:Come produrre un asse in scala esponenziale?
from numpy import log2
import matplotlib.pyplot as plt
xdata = [log2(x)*(10/log2(10)) for x in range(1,11)]
ydata = range(10)
plt.plot(xdata, ydata)
plt.show()
Questo produce il seguente grafico: La mia domanda è: come posso modificare questo, in modo che la trama, con gli stessi dati come input, appare come una linea retta? Ciò richiede fondamentalmente un ridimensionamento dell'asse x in modo appropriato, ma non riesco a capire come farlo. La ragione per fare questo è che sto visualizzando una funzione che cambia molto poco all'inizio, ma inizia a fluttuare di più verso la fine dell'intervallo valido, quindi voglio avere una risoluzione orizzontale più elevata verso la fine. Se qualcuno può proporre una soluzione alternativa al mio approccio, sentiti libero di farlo!
In realtà, dovresti essere in grado di riprodurre le patch senza definire una nuova scala e trasformare ... 'ax.xaxis._scale._transform = ax.xaxis._scale. _transform.inverted() 'Questo non funziona per qualche motivo, anche se ... (o, piuttosto, funziona finché non si tracciano dati ...) Ovviamente, il tuo esempio funziona, anche se piuttosto prolisso! –
Grazie! Ho scoperto questo esempio personalmente, ma speravo che potesse esserci un modo più semplice. –