2015-12-28 5 views
2

Приведенный ниже код показывает круги в Matlab. Как я могу указать MarkerEdgeColor и MarkerFaceColor.Как построить насыщенный круг?

function plot_model 
exit_agents=csvread('C:\Users\sony\Desktop\latest_mixed_crowds\December\exit_agents.csv'); 
%scatter(exit_agents(:,2),exit_agents(:,3),pi*.25^2,'filled'); 
for ii =1:size(exit_agents,1), 
    circle(exit_agents(ii,2),exit_agents(ii,3),0.25); 
end 
end 
function h = circle(x,y,r) 
hold on 
th = 0:pi/50:2*pi; 
xunit = r * cos(th) + x; 
yunit = r * sin(th) + y; 
h = plot(xunit, yunit); 
hold off 
end 

Использование сюжета и рассеивание их странно при масштабировании. Это не то, что я желаю.

+1

Пожалуйста отправьте изображение о том, что вам не нравится с вашим решением. – thewaywewalk

ответ

5

Есть various options для создания кругов. Проще всего, на самом деле прокладывать filled rectangle с полной кривизны:

%// radius 
r = 2; 

%// center 
c = [3 3]; 

pos = [c-r 2*r 2*r]; 
r = rectangle('Position',pos,'Curvature',[1 1], 'FaceColor', 'red', 'Edgecolor','none') 
axis equal 

С обновлением графического движка с R2014b это действительно гладко:

enter image description here

Если у вас есть старые версии Matlab, чем R2014b, вам нужно придерживаться своего тригонометрического подхода, но используйте fill, чтобы заполнить его:

%// radius 
r = 2; 
%// center 
c = [3 3]; 
%// number of points 
n = 1000; 
%// running variable 
t = linspace(0,2*pi,n); 

x = c(1) + r*sin(t); 
y = c(2) + r*cos(t); 

%// draw filled polygon 
fill(x,y,[1,1,1],'FaceColor','red','EdgeColor','none') 
axis equal 

enter image description here

"Разрешение"может быть свободно масштабируется по числу точек n.


Ваша функция может выглядеть следующим

function h = circle(x,y,r,MarkerFaceColor,MarkerEdgeColor) 
hold on 
c = [x y]; 
pos = [c-r 2*r 2*r]; 
r = rectangle('Position',pos,'Curvature',[1 1], ... 
    'FaceColor', MarkerFaceColor, 'Edgecolor',MarkerEdgeColor) 
hold off 
end 
+0

Awesome !! Благодарю. –

+0

Хороший ответ. Можно ли поместить фигуру в изображение размером 160x180 (просто пример) и экспортировать его в файл изображения? – Jame

+0

Это, но вы наверняка должны написать новый вопрос для этого и ссылаться на этот. – thewaywewalk

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