APLpy показывают маркеры, нормализованные с помощью карты цветов
Я использую APLpy для построения файла подгонки и хочу наложить маркеры на этот файл подгонки при определенных значениях ra,dec. Я хочу, чтобы цвета маркеров были закодированы с помощью другого параметра, скажем, величины.
Поэтому я читаю координаты маркера и соответствующие величины из текстового файла (позиции.дат):
ra = np.genfromtxt('positions.dat', dtype=float, comments='%', delimiter=';', missing_values='_', skip_header=1, usecols = (0))
dec = np.genfromtxt('positions.dat', dtype=float, comments='%', delimiter=';', missing_values='_', skip_header=1, usecols = (1))
magnitude = np.genfromtxt('positions.dat', dtype=float, comments='%', delimiter=';', missing_values='_', skip_header=1, usecols = (2))
Я определяю цветовую карту и ее нормализацию:
cmap1 = mpl.cm.YlOrBr
norm1 = mpl.colors.Normalize(10,20)
Все мои значения в файле position.dat находятся между 10 и 20 для проверки кода.
Я попытался построить маркеры следующим образом:
fits1.show_markers(ra,dec, cmap=cmap1, norm=norm1, edgecolor=magnitude, facecolor='none', marker='x', s= 4, linewidths=0.8)
Когда я делаю это, я всегда получаю ошибку:
ValueError: Color array must be two-dimensional
Файл position.dat выглядит так:
ra ; dec ; magnitude
330.45 ; -31.958333 ; 10.0
330.46 ; -31.958333 ; 11.0
330.47 ; -31.958333 ; 12.0
330.48 ; -31.958333 ; 13.0
330.49 ; -31.958333 ; 14.0
330.50 ; -31.958333 ; 15.0
330.51 ; -31.958333 ; 16.0
330.52 ; -31.958333 ; 17.0
330.53 ; -31.958333 ; 18.0
330.54 ; -31.958333 ; 19.0
330.55 ; -31.958333 ; 20.0
1 ответ
Проблема в том, что разброс matplotlib не может принимать значения для edgecolor
а также facecolor
это не цветные массивы (то есть массивы значений RGB). Правильный способ достичь того, что вы пытаетесь сделать, это использовать Scatter c
аргумент, так что в этом случае:
fits1.show_markers(ra,dec, cmap=cmap1, norm=norm1,
c=magnitude, facecolor='none',
marker='x', s=4, linewidths=0.8)