Я разместил цветную полосу рядом с картограммой. Поскольку отображаемые данные являются дискретными, а не непрерывными значениями, я использовал LinearSegmentedColormap (используя рецепт из кулинарная книга scipy), которую я инициализировал своим максимальным подсчитанным значением + 1, чтобы показать цвет для 0. Однако теперь у меня есть две проблемы:
Метки галочки расположены неправильно (кроме 5, больше или меньше) — они должны быть расположены в середине цвета, который они определяют; т.е. 0 - 4 должны быть перемещены вверх, а 6 - 10 должны быть перемещены вниз.
Если я инициализирую цветовую полосу с помощью
drawedges=True
, чтобы я мог стилизовать ее свойстваdividers
, я получаю следующее:
Я создаю свою цветовую карту и цветовую панель следующим образом:
cbmin, cbmax = min(counts), max(counts)
# this normalises the counts to a 0,1 interval
counts /= np.max(np.abs(counts), axis=0)
# density is a discrete number, so we have to use a discrete color ramp/bar
cm = cmap_discretize(plt.get_cmap('YlGnBu'), int(cbmax) + 1)
mappable = plt.cm.ScalarMappable(cmap=cm)
mappable.set_array(counts)
# set min and max values for the colour bar ticks
mappable.set_clim(cbmin, cbmax)
pc = PatchCollection(patches, match_original=True)
# impose our colour map onto the patch collection
pc.set_facecolor(cm(counts))
ax.add_collection(pc,)
cb = plt.colorbar(mappable, drawedges=True)
Поэтому мне интересно, является ли мое преобразование счетчиков в интервал 0,1 одной из проблем.
Обновлять :
Попробовав то, что предложил Хукед, значение 0 является правильным, но последующие значения устанавливаются постепенно выше, до точки, где 9 находится там, где должно быть 10:
Вот код, который я использовал:
cb = plt.colorbar(mappable)
labels = np.arange(0, int(cbmax) + 1, 1)
loc = labels + .5
cb.set_ticks(loc)
cb.set_ticklabels(labels)
И просто для подтверждения, labels
определенно имеет правильные значения:
In [3]: np.arange(0, int(cbmax) + 1, 1)
Out[3]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
cmap
, а затемpc.set_array
в счетчики? - person urschrei   schedule 10.09.2013cmap_discretize
как на странице wiki.scipy.org/Cookbook/Matplotlib/ColormapTransformations а> . Вот как я создал свой пример, который не страдает от странного размещения. - person Hooked   schedule 10.09.2013