Sonunda aralarındaki farkı anlamak için bazı deneyler yapmak için biraz zaman buldum. İşte keşfettiğim şey:
log
yalnızca pozitif değerlere izin verir ve negatif olanların ( mask
veya clip
) nasıl ele alınacağını seçmenize izin verir .
symlog
simetrik günlük anlamına gelir ve pozitif ve negatif değerlere izin verir.
symlog
grafik içinde sıfır civarında bir aralık ayarlamaya izin verir, logaritmik yerine doğrusal olacaktır.
Grafikler ve örneklerle her şeyin daha kolay anlaşılacağını düşünüyorum, öyleyse deneyelim:
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)
Tamlık adına, her bir rakamı kaydetmek için aşağıdaki kodu kullandım:
# Default dpi is 80
pyplot.savefig('matplotlib_xscale_linear.png', dpi=50, bbox_inches='tight')
Şunları kullanarak şekil boyutunu değiştirebileceğinizi unutmayın:
fig = pyplot.gcf()
fig.set_size_inches([4., 3.])
# Default size: [8., 6.]
(Bana kendi soruya cevap hakkında emin değilseniz, okumak bu )