2014-07-21 1 views
1

У меня есть разброс график в следующем формате:Создание CMap, где цвета связаны с другой переменной

BPT Diagram

Каждая точка на этой диаграмме представляет собой галактики со свойством, известным как скорость образования звезд , Я хочу предписать цветовую карту, зависящую от этой переменной, то есть для более высоких SFR цвет становится более синим, а для более низких SFR цвет становится более красным. (Игнорируйте часть бинограммы с гистограммой для этого упражнения.)

Как бы это достичь? Должен ли я создать и изменить свой собственный cmap?

ответ

2

Вам просто нужен график рассеяния точек с координатами x и y и цвет, представляющий третью переменную?

это то, что разброс для, просто используйте:

import matplotlib.pyplot as plt 

plt.scatter(x, y, c=z, cmap='jet') 

вы можете дать ему любую другую цветовую палитру, все возможности приведены здесь: http://matplotlib.org/examples/color/colormaps_reference.html

здесь небольшой пример:

import matplotlib.pyplot as plt 
import numpy as np 
x = numpy.random.normal(0, 2, 100) 
y = numpy.random.normal(0, 2, 100) 
r = np.sqrt(x**2 + y**2) 
plt.scatter(x, y, c=r, cmap='jet') 

это даст вам 100 2d-гауссовских распределенных точек с цветами в зависимости от расстояния до (0,0)

+0

Привет Макс, большое спасибо за ваш ответ. У меня есть один вопрос: тогда cmap представляет собой инкрементные изменения третьей переменной, т. Е. Z = 3 и z = 3,01 ... они имеют один и тот же грубый цвет? Но будет ли z = 3 и z = 4 отчетливо отличаться (либо оттенок, либо совершенно другой цвет?) –

+0

ValueError: Цветная матрица должна быть двумерной –

+0

, по умолчанию цветовая полоса линейна от min (z) до макс (г). Посмотрите на цветные полосы и попробуйте простые примеры, как тот, который я редактировал в своем посте. с аргументами vmin и vmax, которые вы можете установить, какие значения находятся в верхней и нижней частях цветовой полосы. Для ошибки вы должны представить код. – MaxNoe