plot multiple data from excel with legend
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
p2 = 'filename.xlsx'
hold on
x1 = xlsread(p2,'1','E2:E37');
y1 = xlsread(p2,'1','C2:C37');
%..... other x and y data
x10 = xlsread(p2,'1','E326:E361');
y10 = xlsread(p2,'1','C326:C361');
eplot = plot(x1,y1,'r-.',x2,y2,'y',x3,y3,'g',x4,y4,'c',x5,y5,'b',x6,y6,'m',x7,y7,x8,y8,x9,y9,x10,y10);
legend('1','2','3','4','5','6','7','8','9','10')
hold off
Is there a way to specify all my x data is from E2:E361 but still make it plot 10 different lines by specifying the range of each line's number of x values
I would like to use 1:length(line colour) but don't know how it works
I also can't change the colour of a line to orange even after using the hexdecimal for it eventhough I use R2021a
eplot = plot(x1,y1,'r-.',x2,y2,'#D95319')
0 Kommentare
Antworten (1)
Rahul
am 8 Nov. 2024 um 8:57
To achieve the desired plot after reading data from an ‘xlsx’ file, you can use the 'readmatrix' function with 'Sheet' argument while obtaining the entire range of x and y data. Here is an example:
p2 = 'filename.xlsx'
x_data = readmatrix(p2, 'Sheet', 1, 'Range', 'E2:E361');
y_data = readmatrix(p2, 'Sheet', 1, 'Range', 'C2:C361');
Then you can define the number of points per line and cell arrays to hold the data.
points_per_line = 35; % Adjust this based on your specific data
x_lines = cell(1, 10);
y_lines = cell(1, 10);
Then using a loop you can populate the cell array sequentially.
for i = 1:10
start_idx = (i - 1) * points_per_line + 1;
end_idx = i * points_per_line;
x_lines{i} = x_data(start_idx:end_idx);
y_lines{i} = y_data(start_idx:end_idx);
end
Finally you can make use of 'Color' and 'Linestyle' properties of 'plot' function to correctly define colors of each data range and style. Here is an example:
hold on
colors = {'r', 'y', 'g', 'c', 'b', 'm', '#D95319', 'k', 'b', 'm'};
lineStyles = {'-.', '-', '-', '-', '-', '-', '-', '-', '-', '-'};
for i = 1:10
plot(x_lines{i}, y_lines{i}, 'Color', colors{i}, 'LineStyle', lineStyles{i});
end
legend('1', '2', '3', '4', '5', '6', '7', '8', '9', '10');
hold off
You can refer to the following MathWorks documentations to know more about these functions:
Hope this helps! Thanks.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Legend finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!