Быстрое исправление можно попытаться построить log(counts)
вместо счетчиков в гексбине - это расширит масштаб так, что более высокие значения будут сжаты, а более низкие значения - нет.Заметьте, однако, что вам нужно указать где-то, что визуализируемое значение равно log(counts)
, а не counts
, иначе случайный читатель неизбежно неверно интерпретирует график.
Лучшим способом может быть изменение карты цветовчто вы используете.Встроенные карты более или менее изменяют цвет с «0» на цвет «1» линейно.Для того чтобы более низкие значения имели более широкий разброс по цвету, чем более высокие значения, вам нужна нелинейная цветовая карта.
Для этого вы можете попробовать matplotlib.colors
, в частности matplotlib.colors.LinearSegmentedColormap.from_list
(http://matplotlib.sourceforge.net/api/colors_api.html#matplotlib.colors.LinearSegmentedColormap.from_list)
В основном вы вводите цвета '0' и '1' (например, синий -> красный) и значение гаммы. Наличие гаммы> 1,0 увеличивает чувствительность в нижней части шкалы.
Если не пробовал, но что-то вроде:
import matplotlib.colors as colors
# colourmap from green to red, biased towards the blue end.
# Try out different gammas > 1.0
cmap = colors.LinearSegmentedColormap.from_list('nameofcolormap',['g','r'],gamma=2.0)
# feed cmap into hexbin
hexbin( ...., cmap=cmap )