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