Я новичок в matplotlib и изо всех сил пытаюсь построить colorBar с пользовательскими значениями.
Более конкретно, мне нужно построить только цветную полосу, а не связанную фигуру, и для этого у меня есть список цветовзначения, а также соответствующие значения для каждого из этих цветов;
Я попробовал два разных метода, но не могу получить то, что хочу:
import matplotlib as mpl
from matplotlib import pyplot as plt
colors = [ #1A6AD0, #3D98E3, #79C4E9, #055A05, #99C48C, #AC8C1A ]
values = [ -1800 , -1200, -1, 0, 600 , 1200 ]
fig = plt.figure( figsize=(2,4) )
ax = fig.add_axes([0, 0.05, 0.25, 0.9])
# First option :
cmap = LinearSegmentedColormap.from_list("mypalette", colors, N=1000)
norm = mpl.colors.Normalize(vmin=min(values), vmax=max(values))
cb = mpl.colorbar.ColorbarBase(ax, cmap=cmap, norm=norm, orientation='vertical') # also tried to add ticks=values here but no ..doesnt work .. Color palette has a nice gradient but values do not match their colors. not even with spacing = 'uniform' or 'proportional' ...
# Second option :
norm2 = mpl.colors.BoundaryNorm(values, cmap.N)
cb = mpl.colorbar.ColorbarBase(ax, cmap=cmap, norm=norm2, spacing='proportional' , orientation='vertical', ticks=values ) # Values correspond to the rights colors, but there is no gradient
Итак, моя проблема в том, что в первом случае мне удается получить хороший градиент цвета, нозначения (которые будут галочками) не отображаются в правильной «цветовой позиции» (например, зеленые грани 600, а должны стоить 100). Вся проблема в том, что мои значения расположены неравномерно.Но я не могу их изменить!
Во втором случае у меня правильное соответствие между цветами и значениями, но теперь цвета являются дискретными (появляются по блокам), что действительно раздражает (и не только для визуальных целей)
Я особенно ожидаю быстрого цветового перехода от синего к зеленому для значений, соответствующих -1 и 0
К сожалению, я не могу показать здесь фотографии, когда я использую безопасный компьютер для программирования, но то, что я получил вПервый и второй метод аналогичны первым двум изображениям на этой странице: https://matplotlib.org/tutorials/colors/colorbar_only.html#sphx-glr-tutorials-colors-colorbar-only-py
Конечно, я хотел бы получить ColorBar с хорошим цветовым градиентом и правильным соответствием между цветами<-> значения
Я нашел и прочитал различные примеры в Интернете, особенно здесь и в документации по matplotlib, но, черт возьми ... невозможно
Я что-то упускаю из виду?
Большое спасибо
[английский не мой родной язык]