В matplotlib 2.0, как я могу вернуть поведение цветовой панели в Matplotlib 1.5?

Я только что обновился до matplotlib 2.0 и в целом я очень доволен новыми настройками по умолчанию. Одна вещь, которую я хотел бы вернуться к поведению 1.5 - это plt.colorbar, в частности, йтики. В старом matplotlib на моих цветовых полосах были нанесены только основные галочки; в новом matplotlib нарисованы мелкие и крупные галочки, чего я не хочу.

Ниже показано сравнение поведения 1.5 (слева) и 2.0 (справа) с использованием одной и той же цветовой карты и логарифмических отметок.

Сравнение цветовых утиков

Какие настройки по умолчанию мне нужно установить в matplotlibrc чтобы вернуться к поведению 1.5, показанному слева? Если нет способа сделать это с помощью matplotlibrcКакие другие возможности доступны для изменения этого в глобальном масштабе, за исключением понижения до Matplotlib 1.5?

Я попробовал просто установить cbar.ax.minorticks_off() после каждого случая cbar = plt.colorbar(mesh), но это не решает проблему.

1 ответ

Решение

Достаточно просто установить цветовую панель locator к LogLocator от matplotlib.ticker модуль, а затем вызвать update_ticks() на экземпляре цветовой панели.

Например, рассмотрим этот минимальный пример, который создает цветную полосу, которую вы видите с небольшими галочками:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import matplotlib.colors as colors
import numpy as np

fig, ax = plt.subplots(1)

# Some random data in your range 1e-26 to 1e-19
data = 10**(-26. + 7. * np.random.rand(10, 10))

p = ax.imshow(data, norm=colors.LogNorm(vmin=1e-26, vmax=1e-19))

cb = fig.colorbar(p, ax=ax)

plt.show()

Если мы теперь добавим следующие две строки перед вызовом plt.show() Убираем мелкие галочки:

cb.locator = ticker.LogLocator()
cb.update_ticks()

Кроме того, чтобы достичь того же, вы можете использовать ticks kwarg при создании цветовой панели, и установите его на LogLocator()

cb = fig.colorbar(p, ax=ax, ticks=ticker.LogLocator())
Другие вопросы по тегам