Saya akhirnya menemukan beberapa waktu untuk melakukan beberapa eksperimen untuk memahami perbedaan di antara mereka. Inilah yang saya temukan:
log
hanya mengizinkan nilai positif, dan memungkinkan Anda memilih cara menangani nilai negatif ( mask
atau clip
).
symlog
berarti log simetris , dan memungkinkan nilai positif dan negatif.
symlog
memungkinkan untuk mengatur kisaran sekitar nol dalam plot akan linier, bukan logaritmik.
Saya pikir semuanya akan jauh lebih mudah dipahami dengan grafik dan contoh, jadi mari kita coba:
import numpy
from matplotlib import pyplot
# Enable interactive mode
pyplot.ion()
# Draw the grid lines
pyplot.grid(True)
# Numbers from -50 to 50, with 0.1 as step
xdomain = numpy.arange(-50,50, 0.1)
# Plots a simple linear function 'f(x) = x'
pyplot.plot(xdomain, xdomain)
# Plots 'sin(x)'
pyplot.plot(xdomain, numpy.sin(xdomain))
# 'linear' is the default mode, so this next line is redundant:
pyplot.xscale('linear')
# How to treat negative values?
# 'mask' will treat negative values as invalid
# 'mask' is the default, so the next two lines are equivalent
pyplot.xscale('log')
pyplot.xscale('log', nonposx='mask')
# 'clip' will map all negative values a very small positive one
pyplot.xscale('log', nonposx='clip')
# 'symlog' scaling, however, handles negative values nicely
pyplot.xscale('symlog')
# And you can even set a linear range around zero
pyplot.xscale('symlog', linthreshx=20)
Hanya untuk kelengkapan, saya telah menggunakan kode berikut untuk menyimpan setiap gambar:
# Default dpi is 80
pyplot.savefig('matplotlib_xscale_linear.png', dpi=50, bbox_inches='tight')
Ingat Anda dapat mengubah ukuran gambar menggunakan:
fig = pyplot.gcf()
fig.set_size_inches([4., 3.])
# Default size: [8., 6.]
(Jika Anda tidak yakin tentang saya menjawab pertanyaan saya sendiri, baca ini )