Графический график Matplotlib: незначительные галочки исчезают, когда диапазон большой

При построении полулогарифмического графика (y является log) незначительные отметки (8 в течение десятилетия) на оси y появляются автоматически, но кажется, что, когда диапазон осей превышает 10 ** 10, они исчезают. Я попробовал много способов вернуть их обратно, но безрезультатно. Может быть, они уходят на большие расстояния, чтобы избежать перенаселенности, но у кого-то должен быть выбор?

  • Эквивалент Python для «удерживания» в Matlab
  • Форматирование метки метки метки метки Matplotlib
  • Анализ данных ЭКГ по сигналу в реальном времени на Python
  • Matplotlib bar3d переменная альфа
  • Граница решения границы matplotlib
  • Как удалить строки на графике Matplotlib
  • Проблема с ошибкой ppton matplotlib
  • Matplotlib imshow / matshow отображает значения на графике
  • One Solution collect form web for “Графический график Matplotlib: незначительные галочки исчезают, когда диапазон большой”

    решение для matplotlib 2.0.2 или выше

    Рассмотрим следующий пример

    введите описание изображения здесь

    который создается этим кодом:

    import matplotlib.pyplot as plt import matplotlib.ticker import numpy as np y = np.arange(12) x = 10.0**y fig, ax=plt.subplots() ax.plot(x,y) ax.set_xscale("log") plt.show() 

    Небольшие метки отмечены, и обычные способы показать их (например, plt.tick_params(axis='x', which='minor') ) терпят неудачу.

    Первым шагом было бы показать все степени 10 на оси,

     locmaj = matplotlib.ticker.LogLocator(base=10,numticks=12) ax.xaxis.set_major_locator(locmaj) 

    введите описание изображения здесь

    где трюк состоит в том, чтобы установить numticks на число, равное или большее количество тиков (например, 12 или выше в этом случае).

    Затем мы можем добавить небольшие метки, как

     locmin = matplotlib.ticker.LogLocator(base=10.0,subs=(0.2,0.4,0.6,0.8),numticks=12) ax.xaxis.set_minor_locator(locmin) ax.xaxis.set_minor_formatter(matplotlib.ticker.NullFormatter()) 

    введите описание изображения здесь

    Обратите внимание, что я ограничил это включением 4 младших клещей за десятилетие (использование 8 одинаково возможно, но в этом примере переполнят оси). Также обратите внимание, что numticks снова (совсем неинтуитивно) 12 или больше.

    Наконец, нам нужно использовать NullFormatter() для второстепенных тиков, чтобы для них не появлялись метки.

    решение для matplotlib 2.0.0

    Следующие работы работают в matplotlib 2.0.0 или ниже, но это не работает в matplotlib 2.0.2.

    Рассмотрим следующий пример

    введите описание изображения здесь

    который создается этим кодом:

     import matplotlib.pyplot as plt import matplotlib.ticker import numpy as np y = np.arange(12) x = 10.0**y fig, ax=plt.subplots() ax.plot(x,y) ax.set_xscale("log") plt.show() 

    Небольшие метки отмечены, и обычные способы показать их (например, plt.tick_params(axis='x', which='minor') ) терпят неудачу.

    Первым шагом было бы показать все степени 10 на оси,

     locmaj = matplotlib.ticker.LogLocator(base=10.0, subs=(0.1,1.0, )) ax.xaxis.set_major_locator(locmaj) 

    введите описание изображения здесь

    Затем мы можем добавить небольшие метки, как

     locmin = matplotlib.ticker.LogLocator(base=10.0, subs=(0.1,0.2,0.4,0.6,0.8,1,2,4,6,8,10 )) ax.xaxis.set_minor_locator(locmin) ax.xaxis.set_minor_formatter(matplotlib.ticker.NullFormatter()) 

    введите описание изображения здесь

    Обратите внимание, что я ограничил это включением 4 младших клещей за десятилетие (использование 8 одинаково возможно, но в этом примере переполнят оси). Также обратите внимание – и это может быть ключом здесь, – что аргумент subs , который дает кратность целочисленных степеней базы, на которой размещать тики (см. Документацию ), предоставляется список в течение более двух десятилетий вместо одного.

    Наконец, нам нужно использовать NullFormatter() для второстепенных тиков, чтобы для них не появлялись метки.

    Interesting Posts

    Как разобрать html, который включает javascript-код

    Есть ли библиотека Python для обработки сложных математических наборов (построенных с использованием математической записи set-builder)?

    SQLAlchemy StaleDataError при удалении элементов, вставленных через ORM sqlalchemy.orm.exc.StaleDataError

    Как перезаписать некоторые байты в середине файла с помощью Python?

    Может ли соскабливаться на этой странице, которая активно пересчитывается?

    Ошибка создания исполняемого файла с помощью cx_Freeze: IndexError: индекс tuple выходит за пределы диапазона

    X-Forwarded-Proto and Flask

    Python: как я могу использовать Twisted в качестве транспорта для SUDS?

    Есть ли способ отсоединить графики matplotlib, чтобы вычисления могли продолжаться?

    при создании нового продукта я получил ошибку «Нет каталога каталогов яиц» на plone4.3

    Конвертер xls в csv

    Найдите максимальное значение столбца и верните соответствующие значения строк с помощью Pandas

    pygame – кнопка удержания вниз

    Как вы переносите dask-фрейм (преобразовывать столбцы в строки), чтобы приближаться к принципам аккуратных данных

    Как клонировать ключ в Amazon S3 с помощью Python (и boto)?

    Python - лучший язык программирования в мире.