How to plot a data of points?

4 Ansichten (letzte 30 Tage)
Mai Le Thai
Mai Le Thai am 29 Jan. 2019
Kommentiert: Luna am 30 Jan. 2019
data_array(:,1)= [1; 3; 4; 5; 7; 8];
data_array(:,2)= [4; 6; 12; 15; 3; 12];
color_array= [0 0.447 0.741; 0 1 1; 0 1 0; 1 0 1; 1 0 0; 1 0 1 ];
marker_type= ['o'; '.'; 'o'; '.'; 'o'; '.'];
size_array= [20;5;5;20;5;20];
Now i want to plot al this data of point with just one command and have tried with plot like this but it doesn't work
>>plot( data_array(:,1), data_array(:,2), mark_type, 'MarkerSize', size_array, 'Color', color_array)
How can i solve this problem? Thanks!
  4 Kommentare
KSSV
KSSV am 29 Jan. 2019
Why not a loop?
Mai Le Thai
Mai Le Thai am 29 Jan. 2019
I am trying to vectorize the variable and just want to know another command, which is maybe more efficient

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Luna
Luna am 29 Jan. 2019
Bearbeitet: Luna am 29 Jan. 2019
Hi Mai,
arrayfun gives you what you expected. Check my comments and read more about the function link is here: arrayfun
As KSSV mentioned above I put for loop also in the last part. Both gives the same result.
scatter3 gives you a 3-dimensional plot so you must have (x,y,z) axis datas as input to use that but you have only x and y axis data. Here is the link about scatter3 function you can see examples also: scatter3
% definitions
data_array(:,1)= [1; 3; 4; 5; 7; 8];
data_array(:,2)= [4; 6; 12; 15; 3; 12];
color_array = [0 0.447 0.741; 0 1 1; 0 1 0; 1 0 1; 1 0 0; 1 0 1 ];
marker_type = ['o'; '.'; 'o'; '.'; 'o'; '.'];
size_array= [20;5;5;20;5;20];
% Your color array must be 6x1 size and each row you have 1x3 double:
color_array_new = {[0 0.447 0.741]; [0 1 1]; [0 1 0]; [1 0 1]; [1 0 0]; [1 0 1]};
%% Usage of arrayfun with plot function:
figure;
hold on;
hLine = arrayfun(@(a,b,c,d,e) plot(a(1),b(1),'Marker',c(1),'MarkerSize',d(1),'Color',e{1}),data_array(:,1),data_array(:,2),marker_type,size_array,color_array_new);
% hLine is the handle array of your line objects (6x1 array).
%%%%% OR %%%%%
% This can be done with for loop easily:
figure;
for i = 1:length(marker_type)
plot(data_array(i,1),data_array(i,2), marker_type(i), 'MarkerSize', size_array(i), 'Color', color_array(i,:));
hold on;
end
  2 Kommentare
Mai Le Thai
Mai Le Thai am 30 Jan. 2019
Hi Luna,
Your solution is great. With the for loop I got myself too, but the arrayfun command is what i want to know. Many thanks!
Luna
Luna am 30 Jan. 2019
Your welcome :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Data Distribution Plots finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by