matlab scatter with different colors by reading a file data

1 Ansicht (letzte 30 Tage)
Hi. I am just a pure beginner of Matlab. I want to use Matlab scatter with different colors by reading a file data.
For example, consider that a.txt file has 6X6 data like following.
10, 20, 30 , 40, 50, 60
14 , 18, 17, 26, 39 ,11
red, blue, red, red, blue, green
10, 20, 30 , 40, 50, 60
19 , 88, 13, 7, 56 ,21
black, red , grey, black, black, red
First,second, the forth, the fifth lows are number. The third and the sixth lows are text.
Now I want to make at first 6 dots on 2-dimension screen with 3 differe colors. (red, blue, green) and (with pause) the next 6 dots on 2-dimension screen with 3 differe colors. (black, grey, red)
First and forth lows are the x value and second and fifth lows are the y value the dots of x-y plane.
How can I code matlab for this problem?
I tried make the code like this for the three lows.
fileID1 = fopen('a.txt','r');
formatSpec = '%f %f %s';
sizeA = [3 Inf];
A = fscanf(fileID1,formatSpec,sizeA)
x=A(1,:)
y=A(2,:)
z=A(3,:)
scatter(x,y,20,z,'filled')
But this failed because I don't know the exact usage of 'formatSpec'. Also I don't know how break the 6 lows with 3X6 matrix.
I hope your help.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 5 Sep. 2021
Bearbeitet: Walter Roberson am 5 Sep. 2021
Break it up into several pieces:
cnames = {'black', 'blue', 'green', 'grey', 'red'};
cmap = [
0 0 0; %black
0 0 1; %blue
0 1 0; %green
.5 .5 .5; %grey
1 0 0; %red
];
fileID1 = fopen('a.txt','r');
while true
tx = fgetl(fileID1);
ty = fgetl(fileID1);
tc = fgetl(fileID1);
if ~ischar(tx) || ~ischar(ty) || ~ischar(tc); break; end %end of file
x = sscanf(tx, '%f,', [1 inf]);
y = sscanf(ty, '%f,', [1 inf]);
innames = regexp(tc, '\s*,\s*', 'split');
[found, idx] = ismember(innames, cnames);
if ~all(found)
error('color "%s" is unknown', innames{find(~found,1)});
end
c = cmap(idx,:);
scatter(x, y, 200, c, 'filled');
end

Weitere Antworten (0)

Kategorien

Mehr zu Time Series Events finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by