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

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

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() для второстепенных тиков, чтобы для них не появлялись метки.

  • Matplotlib colorbar перемещает вторую ось x
  • обновите фигуру, сделанную с imshow (), контуром () и колчаном ()
  • Элегантное изменение цвета рамки сюжета в matplotlib
  • График x-тиков в гистограмме matplotlib
  • Как сохранить заговор Seaborn в файл
  • Python: Matplotlib аннотирует разрыв строки (с латексным и без него)
  • Переменная gnuplot linecolor в matplotlib?
  • Наилучший подход к пиксельной фигуре матплотблиба
  • Python - лучший язык программирования в мире.