Plotting 3 lines with different x values in one single plot?
Mostra commenti meno recenti
Hi, I have data of absorbtion spectra of three different materials and I need to plot all of them on the same plot. The problem is that the X for each one isn't the same. For all of them the X axis is the wavelength but in one material this value jumps in 2 and in other it jumps in 25. This means that the wavelength (x value) of each material has a different length and not precisly the same values. However, I need all of them in one plot as in the following image:

My idea is to create a loop that eliminates the wavelengths that not match between the three materials (three vectros) but I don't know how to do it.
Thank you :)
Risposte (1)
Star Strider
il 18 Apr 2020
Example —
x1 = sort(rand(1,10));
y1 = rand(size(x1));
x2 = sort(rand(1,27));
y2 = rand(size(x2));
figure
plot(x1, y1)
hold on
plot(x2, y2)
hold off
grid
.
12 Commenti
undefined undefined
il 18 Apr 2020
Star Strider
il 18 Apr 2020
Modificato: Star Strider
il 18 Apr 2020
I also get nothing because I do not have those matrices to experiment with.
If I did, I might be able to do something with them, or at least figure out what the problem is.
EDIT —
Use the save function to save the matrices to a .mat file and use the paperclip icon to upload it here.
.
undefined undefined
il 18 Apr 2020
Star Strider
il 18 Apr 2020
My pleasure.
The plot code works, however the linear axes do not.
Using the code you posted (that I will not re-post here) reveals that the variable dimensions are such that it is necessary to plot them on loglog axes:
figure
loglog(x1, y1)
hold on
plot(x2, y2)
hold off
grid
legend('\epsilon', 'H_2O')
producing:

That is the best I can do with your data to produce the plot. (On a linear scale, ‘epsilon’ plots as a vertical line on the left axis, and ‘water’ plots as a horizontal line in the lower axis. They are both present, although invisible for all practical purposes.)
.
undefined undefined
il 19 Apr 2020
Star Strider
il 19 Apr 2020
That may not be possible, since those two vectors are different lengths.
You might be able to use the interp1 function to interpolate them so that ‘Total’ to to the correct length for the appropriate ‘X’ value ( that may require interpolating ‘Total’ again), however I would have to know more in order to be certain.
Note that interpolation creates data that were not in the original data, and while this may be appropriate in some situations, it would not be in every situation. Be very careful with that.
undefined undefined
il 19 Apr 2020
Modificato: undefined undefined
il 19 Apr 2020
Star Strider
il 19 Apr 2020
I cannot determine what you want to do.
The ‘Hemoglobin’ variable is a (376x3) table.
The ‘water’ variable is a (231x2) table.
It is not possible to add these tables together, or do any other element-wise opearations on them. They have different sizes.
It is not possible to add individual columns from them together. They have different lengths.
Exactly what vectors do you want to combine?
How do you want to combine them?
What vector do you want to plot them against?
Note that none of this may be possible without severely distorting the data. That would make any calculations you do with the distorted data unreliable (and unpublishable, if that is your intent).
undefined undefined
il 20 Apr 2020
Star Strider
il 20 Apr 2020
Please be more specific.
‘Y1 is th Hemoglobin after merging two columns, so Hemoglobin is now (376x2).’
What does ‘merge’ mean?
What is ‘Y2’?
What are the new variables?
How are they calculated?
What do you want to do with them?
Posting the relevant parts of your code that creates the variables would definitely help.
.
undefined undefined
il 21 Apr 2020
Star Strider
il 21 Apr 2020
I still have no idea what you want to do.
Try this:
y3 = interp1(x1, y1, x2, 'linear','extrap');
figure
loglog(x1, y1)
hold on
plot(x2, y2)
plot(x2, y2+y3)
hold off
grid
legend('\epsilon', 'H_2O', 'y_2+y_3')
.
Categorie
Scopri di più su Data Distribution Plots in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

