Saya membuat plot ini menggunakan Matlab
Menggunakan matplotlib, sumbu x menarik angka besar seperti 100000, 200000, 300000. Saya ingin memiliki sesuatu seperti 1, 2, 3 dan 10 ^ 5 untuk menunjukkan bahwa sebenarnya 100000, 200000, 300000.
Apakah ada cara sederhana untuk membuat skala seperti itu di matplotlib?
python
matplotlib
Burung rajawali
sumber
sumber
ticklabel_format
juga merupakan metode untuk objek sumbu, Anda dapat mencoba sesuatu sepertiax.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
[0.1, 0.2, ...]
dan saya lebih suka[1, 2, ...]
dengan eksponen yang disesuaikan. apakah Anda dapat menemukan solusi untuk itu?Ini bukanlah jawaban atas pertanyaan awal Anda, melainkan untuk salah satu pertanyaan yang Anda miliki di badan pertanyaan Anda.
Sedikit basa-basi, agar penamaan saya tidak terasa aneh:
import matplotlib from matplotlib import rc from matplotlib.figure import Figure ax = self.figure.add_subplot( 111 )
Seperti yang telah disebutkan, Anda dapat menggunakan ticklabel_format untuk menentukan bahwa matplotlib harus menggunakan notasi ilmiah untuk nilai besar atau kecil:
ax.ticklabel_format(style='sci',scilimits=(-3,4),axis='both')
Anda dapat memengaruhi cara ini ditampilkan menggunakan flag di rcParams (dari matplotlib import rcParams) atau dengan menyetelnya secara langsung. Saya belum menemukan cara yang lebih elegan untuk mengubah antara notasi ilmiah '1e' dan 'x10 ^' selain:
ax.xaxis.major.formatter._useMathText = True
Ini akan memberi Anda lebih banyak Matlab-esc, dan memang penampilan yang bisa dibilang lebih baik. Saya pikir hal berikut harus melakukan hal yang sama:
rc('text', usetex=True)
sumber
The formatter skalar mendukung mengumpulkan eksponen. Dokumentasinya adalah sebagai berikut:
teknik Anda adalah:
from matplotlib.ticker import ScalarFormatter xfmt = ScalarFormatter() xfmt.set_powerlimits((-3,3)) # Or whatever your limits are . . . {{ Make your plot }} gca().xaxis.set_major_formatter(xfmt)
Untuk menampilkan eksponen dalam format
x10^5
, buat instance ScalarFormatter denganuseMathText=True
.Anda juga bisa menggunakan:
xfmt.set_useOffset(10000)
Untuk mendapatkan hasil seperti ini:
sumber
useMathText=True
to getx10^4
.Saya menemukan solusi sederhana
pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4))
sumber