2013-06-19 4 views
36

Я хотел бы, чтобы цвета точек на графике рассеяния соответствовали значению доли пустот, но в логарифмической шкале для усиления различий. Я сделал это, но теперь, когда я делаю plt.colorbar(), он отображает журнал доли пустот, когда мне действительно нужна фактическая доля пустот. Как я могу сделать шкалу журнала на цветной панели с соответствующими метками доли пустот, которая принадлежит [0.00001,1]?Логарифмический цветной бар в графике рассеяния matplotlib

Вот изображение сюжета, который у меня есть сейчас, но цветной байт недействительной маркирован соответствующим образом, чтобы соответствовать истинной фракции пустот, а не журналу.

current plot

fig = plt.figure() 
plt.scatter(x,y,edgecolors='none',s=marker_size,c=np.log(void_fraction)) 
plt.colorbar() 
plt.title('Colorbar: void fraction') 

Спасибо за вашу помощь.

ответ

50

Существует в настоящее время раздел документации, описывающей how color mapping and normalization works (то есть ссылка на разработки документации, но относится ко всем версиям MPL. Это будет в документации магистральный «скоро»)

То, как matplotlib делает цветовое сопоставление в два этапа: сначала функция Normalize (завернутая подклассами matplotlib.colors.Normalize), которая отображает данные, которые вы вводите, в [0, 1]. Второй шаг отображает значения в пространстве [0,1] -> RGBA.

Вам просто нужно использовать класс нормализации LogNorm, переданный с помощью norm kwarg.

plt.scatter(x,y,edgecolors='none',s=marker_size,c=void_fraction, 
       norm=matplotlib.colors.LogNorm()) 

Если вы хотите масштабировать/настроить данные для построения графиков, то лучше пусть matplotlib делать преобразования, чем сделать это вашей собственной личности.

  • Normalizedoc
  • LogNormdoc
  • matplotlib.colordoc
+0

Отлично, спасибо! – Cokes

+5

Результат показан на рисунке 2. http://pubs.rsc.org/ru/content/articlehtml/2014/cp/c3cp55039g Я добавил переполнение стека в подтверждениях! – Cokes

+0

Спасибо! ЕСЛИ только документы указали, где искать. Есть все эти фантастические функции с фантастическими параметрами, предлагающими фантастические возможности, но ничего о том, как их использовать. – EndsOfInvention

Смежные вопросы