2012-02-17 3 views
2

Я хотел бы автоматически создавать графики твердости H и модуля Юнга E образцов в зависимости от нагрузки L индентора.Matlab: Изменение спецификации линии

Моя цель - получить непрозрачные маркеры, связанные пунктирными линиями. При использовании команды set(handle,'linestyle',spec) или line(...,'linestyle',spec) у меня есть маркеры или линии, ни одна из них - MATLAB выдает ошибку.
Есть ли способ получить линии и маркеры без построения двух строк с одинаковыми данными и разными характеристиками? Я хотел бы продолжить это, чтобы работать с легендой, как описано в другом вопросе (MATLAB: legend for plotyy with multiple data sets).

Вот мой фактический код MWE:

%data1 - m x 3 matrix with data for first sample: 
[m,n]=size(data1); 

%plots 1st sample data: 
[ax,h1,h2]=plotyy([data1(1:m,1)],[data1(1:m,2)],[data1(1:m,1)],[data1(1:m,3)]); 

set(h1,'linestyle','o') 
set(h2,'linestyle','o') 

%store colors: 
c1=get(h1,'color');c2=get(h2,'color'); 

%plots 2nd sample hardness: 
line('parent',ax(1),'xdata',[data2(1:m,1)],'ydata',[data2(1:m,2)],... 
    'color',c1,'linestyle','s'); 

%plots 2nd sample young's modulus 
line('parent',ax(2),'xdata',[data2(1:m,1)],'ydata',[data2(1:m,3)],... 
    'color',c2,'linestyle','s'); 

ответ

5

Я думаю, вы можете быть усложнять его?

попробовать что-то вроде этого:

% MarkerSize determines the size of the markers 
% MarkerEdgeColor determines the color of the markers themselves 
% Color determines the line color connecting them 
data = rand(1,5); 
plot(data, '.--', 'MarkerSize', 50, 'MarkerEdgeColor', [0.1 0.8 0.2], 'Color', [0.9 0.2 .4]); 

Он производит следующие изображения непрозрачных маркеров, связанных с пунктирными линиями:

Plot

Для поддержки plotyy, процесс в основном тот же, за исключением того, вы должны установить некоторые свойства как на родительскую, так и на дочернюю оси. Вот пример кода:

% Generate some data 
datax1 = rand(1,5); 
datay1 = rand(1,5); 
datax2 = rand(1,5); 
datay2 = rand(1,5); 

% Plot the data  
[ax, h1, h2] = plotyy(datax1, datay1, datax2, datay2); 

% Different line styles for each child plot 
set(h1, 'LineStyle', '--'); 
set(h2, 'LineStyle', '-.'); 

% Different markers for each child plot 
set(h1, 'Marker', '.'); 
set(h2, 'Marker', '+'); 

% Different marker sizes for each child plot 
set(h1, 'MarkerSize', 50); 
set(h2, 'MarkerSize', 5); 

% Generate two colors. We keep a copy so we can set the axes to match. 
color1 = rand(1,3); 
color2 = rand(1,3); 

% The face colors are darker versions of the colors. 
set(h1, 'MarkerEdgeColor', color1 * 0.5); 
set(h2, 'MarkerEdgeColor', color2 * 0.5); 

% This is the plot line color. 
set(h1, 'Color', color1); 
set(h2, 'Color', color2); 

% Set the axis colors to match the plot colors. 
set(ax(1), 'YColor', color1); 
set(ax(2), 'YColor', color2); 

Который производит следующее изображение:

enter image description here

+0

Поддерживает ли сюжет ' 'parent'' вариант? Потому что мне нужен один график, связанный с левой осью, а второй - с правой осью. 'plotyy (...), hold on, plotyy (...)' вызвал беспорядок на второй оси :( – Crowley

+0

Я отредактирую свой ответ на поддержку 'plotyy' ... – aardvarkk

+0

Ну,' set (h2, 'Marker ',' + '); 'сделал все, что я хотел. Большое спасибо за ваше время. – Crowley

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