2017-02-17 27 views
0

У меня есть четыре SFIT объект, который я сюжет с:Изменение цвета поверхности участка из SFIT в MATLAB

figure; 
hold on; 
plot(f1); 
plot(f2); 
plot(f3); 
plot(f4); 

Строит 3D-поверхности. Однако я хотел бы дать каждой поверхности один уникальный цвет, как это обычно бывает с функцией графика. Обычно это делается путем предоставления параметра Я «г» или что-то, что указывает на цвет, как:

plot(f1,'r'); 

Однако, если я делаю это здесь, я получаю следующее сообщение об ошибке:

Error using plot No value was given for 'r'. Name-value pair arguments require a name followed by a value.

Error in sfit/plot>iParseInputs (line 231) p.parse( parameterValuePairs{:});

Error in sfit/plot (line 44) [XY, Z, in, out, style, level, hParent] = iParseInputs(obj, varargin{:});

Это указывает, что должна быть строка, чтобы дать, но какой? Я уже пробовал что-то вроде «Цвет» или «Линейный цвет», но они не были распознаны

Упрощение вопроса: Я хочу, чтобы плоскости, представляющие подогнанный объект, имели один цвет. И каждый самолет будет иметь другой.

ответ

1

С этой ссылке:

https://uk.mathworks.com/matlabcentral/answers/153208-how-can-i-make-the-contour-plot-of-an-sfit-object-resemble-the-plot-generated-by-the-contour-com

Вы можете попробовать

f1 = fit([x y], z, 'poly23'); 
ph = plot(f1, 'Style', 'Contour'); 
set(ph, 'Fill', 'off', 'LineColor', 'auto'); 

Документация для set

https://uk.mathworks.com/help/matlab/ref/set.html


Редактировать

выше предложение только отображает 2D сюжет, увидеть это предыдущий SO ответ для 3D случая:

MATLAB - Plot multiple surface fits in one figure

Соответствующий код для вас:

figure; 
h = plot(f1); 
set(h(1),'FaceColor','r'); 

Итак, «волшебное слово», которое вы искали, это 'FaceColor', используемый в сочетании с set (упомянутый выше) ,

+0

Благодарим вас за ответ, однако это не совсем то, что я хотел. Сначала использование графика (f1, «Стиль», «Контур») приводит только к 2D-графику, где у меня есть 3D-сюжет. При простом использовании графика (f1), так что график все еще 3D, вызов функции для набора даст ошибку: «В классе Surface нет свойства Fill» – Kev1n91

+0

@ Kev1n91 Ах да, см. Мое редактирование – Wolfie

+0

Спасибо, это ссылка является litle бит overkill, но я нашел правильную строку, так просто: figure; h = график (f1); set (h (1), 'FaceColor', 'r'). Я не уверен, является ли этот вопрос дубликатом или нет. Однако, если вы можете вставить этот фрагмент кода в свой ответ, я соглашусь с ним. – Kev1n91