Что такое цветной заказ MATLAB по умолчанию?

У меня есть график с двумя гистограммами. Однако трудно сказать, какая гистограмма на графике исходит из первого набора данных и которая отображает второй набор данных. Для каждой гистограммы есть разная цветная линия: одна - синяя, а другая - зеленая. По умолчанию MATLAB 'ColorOrder' изменяется между устройствами? Если нет - какой порядок?

Ответы

Ответ 1

Хороший вопрос! Существует порядок цветов по умолчанию для MATLAB. Обратите внимание, что версии до R2014b, порядок цветов по умолчанию для MATLAB использует карту цвета струи. В цветной карте струи первый участок является синим, а второй - зеленым. Для версий после R2014b это следует за цветовой картой parula, где первый участок будет светлее голубого цвета, а второй - медный оранжевый. Если вы действительно хотите узнать, какой порядок цветов для вашего сюжета, убедитесь, что график открыт в MATLAB, затем выполните следующие действия:

get(gca,'colororder')

Это вернет 2D-матрицу, где каждая строка даст вам долю красного, зеленого и синего для каждого сюжета, который вы производите. На моей машине во время этого сообщения, когда я запускал MATLAB R2013a и с Mac OSX 10.9.5, это то, что я получил:

>> get(gca,'colororder')

ans =

         0         0    1.0000
         0    0.5000         0
    1.0000         0         0
         0    0.7500    0.7500
    0.7500         0    0.7500
    0.7500    0.7500         0
    0.2500    0.2500    0.2500

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

Таким образом, вышеупомянутый порядок цветов:

  • Чистый синий
  • Более светлый оттенок зеленого цвета.
  • Чистый красный
  • Смесь зеленого и синего цвета, которая является голубой.
  • Смесь красного и синего цветов, пурпурный
  • Смесь красного и зеленого, желтого цвета
  • Легкая смесь красного, зеленого и синего цветов, которая выглядит как темно-серый.

В настоящее время (10 марта 2016 года) я использую MATLAB R2015a, и это цветная карта, которую я получаю:

>> get(gca,'colororder')

ans =

         0    0.4470    0.7410
    0.8500    0.3250    0.0980
    0.9290    0.6940    0.1250
    0.4940    0.1840    0.5560
    0.4660    0.6740    0.1880
    0.3010    0.7450    0.9330
    0.6350    0.0780    0.1840

Кортежи RGB в этом случае немного сложнее, поэтому трудно понять, что они собой представляют, просто глядя на цвета.


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

colours = permute(get(gca, 'colororder'), [1 3 2]);
colours_resize = imresize(colours, 50.0, 'nearest');
imshow(colours_resize);

Вот что я получил для MATLAB R2013a:

введите описание изображения здесь

Запуск этого кода снова в MATLAB R2015a, вот что я получаю:

введите описание изображения здесь


В качестве альтернативы вы всегда можете использовать legend, который определяет, какая гистограмма поступает из данных.

Ответ 2

Для этой конкретной цели существует цветовая палитра - lines (введена перед R2006a). Здесь, что lines.m говорит:

%LINES  Color map with the line colors.
%   LINES(M) returns an M-by-3 matrix containing a "ColorOrder"
%   colormap. LINES, by itself, is the same length as the current
%   colormap. If no figure exists, MATLAB uses the length of the
%   default colormap.

Если вы откроете документацию lines, вы можете увидеть изображение предварительного просмотра, которое очень похоже на то, что появляется в ответ Rayryeng:

введите описание изображения здесь

Таким образом, пока вы используете стандартный colormap, чтобы знать цвета первых строк n, вам нужно только позвонить lines(n).