Plotting multiple datasets on one plot

17 次查看(过去 30 天)
I have a set of data for three replicate simulations: run0-run2, these consist of .dat files at a set time interval (here, every 100ns until final time 500ns).
I would like to plot these all on one plot but with a different colour gradient from darker to lighter e.g.
Run0 with a blue gradient dark to light as time increases.
Run1 with a green gradient dark to light as time increases.
Run2 with a red gradient dark to light as time increases.
I created the MATLAB script below but during testing, only the red plots would show up.
Combining into one for loop doesn't work as I tried that already.
Any help would be greatly apreciated.
Code below and attached.
r0_f100=readmatrix ('run0_test_fluct-100ns.dat');
r0_f200=readmatrix ('run0_test_fluct-200ns.dat');
r0_f300=readmatrix ('run0_test_fluct-300ns.dat');
r0_f400=readmatrix ('run0_test_fluct-400ns.dat');
r0_f500=readmatrix ('run0_test_fluct-500ns.dat');
x_0=r0_f100(:,1);
y_0=[r0_f100(:,2),r0_f200(:,2),r0_f300(:,2),r0_f400(:,2),r0_f500(:,2)];
r1_f100=readmatrix ('run1_test_fluct-100ns.dat');
r1_f200=readmatrix ('run1_test_fluct-200ns.dat');
r1_f300=readmatrix ('run1_test_fluct-300ns.dat');
r1_f400=readmatrix ('run1_test_fluct-400ns.dat');
r1_f500=readmatrix ('run1_test_fluct-500ns.dat');
x_1=r1_f100(:,1);
y_1=[r1_f100(:,2),r1_f200(:,2),r1_f300(:,2),r1_f400(:,2),r1_f500(:,2)];
r2_f100=readmatrix ('run2_test_fluct-100ns.dat');
r2_f200=readmatrix ('run2_test_fluct-200ns.dat');
r2_f300=readmatrix ('run2_test_fluct-300ns.dat');
r2_f400=readmatrix ('run2_test_fluct-400ns.dat');
r2_f500=readmatrix ('run2_test_fluct-500ns.dat');
x_2=r2_f100(:,1);
y_2=[r2_f100(:,2),r2_f200(:,2),r2_f300(:,2),r2_f400(:,2),r2_f500(:,2)];
num_plots = 5;
colors = linspace(0.5, 1, num_plots)';
figure
hold on
for i=1:num_plots
plot(x_0, y_0(:,i), 'color', [0 0 colors(i)]);
end
for i=1:num_plots
plot(x_1, y_1(:,i), 'color', [0 colors(i) 0]);
end
for i=1:num_plots
plot(x_2, y_2(:,i), 'color', [colors(i) 0 0]);
end
xlabel ('Residue No.'); ylabel ('RMSF / Å');
ax = gca;
fig=gcf;
fig.Position(3:4)=[800,600];
fig.Color=[0.95 0.95 0.95];
ax.Color=[0.8 0.8 0.8];
hold off
%exportgraphics(fig,'test_RMSF.jpg','Resolution',300);

采纳的回答

Star Strider
Star Strider 2024-8-15,20:57
I have no idea what your data are.
The red plots are plotted last, so if the values are similar, it is likely that they are over-plotting the earlier plots. You can check this by commenting-out two different combinations of the three plot loops each time, and running your code, and see what plots where.
Alternatively, use tiledlayout to plot each loop in a different axes. Another option is to use plot3 and offset each plot in each loop by a different ‘y’ value.
  2 个评论
Lawrence
Lawrence 2024-8-15,22:36
You are absolutely correct, the values were overplotting eachother.
Turns out the problem was in the script that generated the data prior to plotting in MATLAB meaning the values were identical for each run, hence the overplotting.
Only spotted it when I graphed them separately as a sanity check and all three were identical.
Thanks for the help.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Annotations 的更多信息

产品


版本

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by