Matplotlib - данные исчезают, когда я переключаюсь на полулог - PullRequest
3 голосов
/ 27 октября 2010

Я пытаюсь построить базовый полулог, используя pyplot и matplotlib, с осью y, являющейся логарифмической шкалой. Я использую следующий код:

pylab.figure(num=None,figsize=(8,6))  
pylab.plot(x_loc,var1,x_loc,var2)  
\#pylab.yscale('log')  
pylab.xlabel('$y/L_{1/2}$',fontsize=18)  
pylab.ylabel('$n/n_{max}$',fontsize=18)  
pylab.title('Particle Concentration vs. Position',fontsize=18)  
pylab.show() 

Это дает мне тонкий линейный график с третьей строкой, прокомментированной выше, но когда я раскомментирую эту строку и перезапущу, данные исчезнут с графика. Окно графика имеет правильные пределы, но данных больше нет.

Кто-нибудь сталкивался с этой проблемой раньше?

Спасибо!
Питер

Ответы [ 3 ]

1 голос
/ 11 сентября 2013

В вопросе упоминается, что существуют проблемы с полулогозаменителем, но код иллюстрирует простой логарифмический график. В любом случае обычная проблема с исчезновением графиков или частей графиков связана с тем, что точки данных имеют нулевые или отрицательные значения - поскольку они не могут быть представлены с помощью действительных чисел, поэтому они исключаются из графиков. Но можно заставить matplotlib построить эти значения, используя его шкалу symlog , которая объединяет логарифмические и линейные шкалы, используя порог linthreshy , при котором они изменяются, например :

 pylab.yscale('symlog',linthreshy=1)

Более подробное объяснение разницы между графиками symlog и log смотрите в этом answer .

1 голос
/ 27 октября 2010

Используя set_yscale ('log'), вы можете изменить это свойство yscale, когда объект уже создан.Попробуйте и посмотрите, решит ли это вашу проблему.Документы для этого здесь: http://matplotlib.sourceforge.net/api/axes_api.html#matplotlib.axes.Axes.set%5Fyscale

также попробуйте изменить свой рендер.сделайте:

from matplotlib import use
use('TkAgg')
import pylab

(только импорт pylab после команды использования)

0 голосов
/ 27 октября 2010

Похоже, что это ошибка в пакете EPDLab, который я использую (от Enthought).Если я запускаю эту команду из IPython или терминала (python «имя файла»), график выводится правильно.

...