How to plot 10 figures on same plot, and How do i find radius inbetween 0 and 1.
3 views (last 30 days)
Show older comments
Nathen Eberhardt
on 11 Apr 2020
Commented: Image Analyst
on 11 Apr 2020
So basically, Is there a more cleaner way to do ten random circles on a plot with the x cord and y cordinates with there cordinates between randi([-,8]). Like i have a code doing a function:
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
and i have 10 lines of that function being used to plot 10 different circles. Any way it can be condensed into less that ten lines? Also How can i get my radius to be inbetween [0,1] and not 0 or 1. (It can be one i just want it to be able to pick any number inbetween them.)
0 Comments
Accepted Answer
Image Analyst
on 11 Apr 2020
Try calling it like this where you pass in the x and y values from your arrays for the centers, and a random number between 0 and 1 for the radius:
for k = 1 : 10
hold on;
h(k) = Circle(x(k), y(k),rand(1))
end
hold off;
and take the holds out of Circle if you want 2 fewer lines.
5 Comments
Image Analyst
on 11 Apr 2020
You can do that if you got all 10 values, and it would be more efficient. Here is how a skilled MATLAB programmer would do it:
hFig = figure;
hFig.WindowState = 'maximized';
numberOfCircles = 10;
% Get all 10 center coordinates in advance. Range is -4 to +8.
x = randi([-4, 8], 1, numberOfCircles);
y = randi([-4, 8], 1, numberOfCircles);
radius = rand(1, numberOfCircles); % Range is 0 to 1.
% Now loop through plotting each circle one at a time.
for k = 1 : 10
hold on;
CircPlot(x(k), y(k), radius(k));
end
hold off;
grid on;
axis 'equal'
caption = sprintf('%d Circles', numberOfCircles);
title(caption, 'FontSize', 15);
xlabel('X', 'FontSize', 15);
ylabel('Y', 'FontSize', 15);
% Put lines along the axes
yline(0);
xline(0);
function CircPlot(xCenter, yCenter, radius)
anglesInRadians = 0 : (pi / 50) : (2 * pi);
xCoordinates = radius * cos(anglesInRadians) + xCenter;
yCoordinates = radius * sin(anglesInRadians) + yCenter;
plot(xCoordinates, yCoordinates, '-', 'LineWidth', 2);
end
More Answers (0)
See Also
Categories
Find more on Formatting and Annotation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!