Опция "symlog" в Matplotlib: как предотвратить появление "кривых"? - PullRequest
4 голосов
/ 13 июля 2011

Я строю данные, экстент которых в х от -1000 до 1000. Но меня интересуют только значения между x = -1 и 0.

Я также хочу нанести на графиклогарифмическая шкалаНо так как значения x отрицательны, я не могу использовать xscale ("log").Я могу использовать xscale («symlog»), и это именно то поведение, которое мне нужно.

К сожалению, «symlog», похоже, не работает.Я не могу использовать аргумент linthreshx со значением меньше 2 (по умолчанию?).Но так как меня интересуют значения x от -1 до 0, я должен использовать этот аргумент и установить для него что-то вроде 1e-5 или даже меньше.

Если я установлю для linthreshx значение, меньшее 1,сюжет нарушается.Вот простой пример, взятый из В чем разница между 'log' и 'symlog'? :

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))

pyplot.axis([-60,60,-1.5,1.5])

pyplot.xscale('symlog', linthreshx=0.1)

Запуск, который вы поймете, что я имею в виду под кривой "возвращение "... Вот результирующее изображение: result

Проблема, по-видимому, заключается в том, что на оси x 0 на самом деле 10 ^ 0 = 1, а не 0. Помещение чего-то меньшего, чем1 заставит линию вернуться назад, а значения осей будут неправильными (при наведении мышью и получении значения x).

Возможно, я не использую правильный инструмент, но как добиться того, чего я хочу?Я хочу, чтобы ось х выглядела так: -10 ^ 2 -10 ^ 1 -10 ^ 0 -10 ^ -1 -10 ^ -2 -10 ^ -3 ... [до моего определенного минимального показателя] ...10 ^ -3 10 ^ -2 10 ^ -1 10 ^ 0 10 ^ 1 10 ^ 2

Спасибо

1 Ответ

7 голосов
/ 27 июля 2011

На самом деле это была ошибка в matplotlib.

См. https://github.com/matplotlib/matplotlib/issues/396

Теперь это исправлено.Я прилагаю картинку, показывающую правильный результат предыдущего фрагмента.Correct result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...