Plotting different datas on the same graph smoothly
Afficher commentaires plus anciens
I want to graph 3 functions (x,y1) (x,y2) (x,y3) smoothly on the same graph. How can I do that? It needs to be smooth. Here are my datas:
x = [1000, 2500, 5000, 7500, 10000, 25000, 50000, 75000, 100000, 250000, 500000, 750000, 1000000, 2500000, 5000000, 7500000, 10000000, 25000000, 50000000, 75000000, 100000000]
y1 = [1.1, 4.2, 9.5, 15.0, 20.0, 52.0, 109.0, 155.0, 208.0, 520.0, 1043.0, 1567.0, 2091.0, 5279.0, 10577.0, 15878.0, 21360.0, 56860.0, 120497.0, 194489.0, 272989.0]
y2 = [2.3, 13.0, 51.4, 3.0, 4.0, 5.0, 8.0, 12.0, 16.0, 39.0, 85.0, 138.0, 204.0, 779.0, 2442.0, 4944.0, 8381.0, 75829.0, 218749.0, 609079.0, 1130344.0]
y3 = [0.1, 0.3, 0.3, 1.0, 0.0, 1.0, 3.0, 5.0, 6.0, 14.0, 29.0, 37.0, 65.0, 147.0, 325.0, 407.0, 651.0, 3546.0, 4333.0, 5048.0, 10292.0]
Réponses (2)
Mehmed Saad
le 19 Avr 2020
x = [1000, 2500, 5000, 7500, 10000, 25000, 50000, 75000, 100000, 250000, 500000, 750000, 1000000, 2500000, 5000000, 7500000, 10000000, 25000000, 50000000, 75000000, 100000000];
y1 = [1.1, 4.2, 9.5, 15.0, 20.0, 52.0, 109.0, 155.0, 208.0, 520.0, 1043.0, 1567.0, 2091.0, 5279.0, 10577.0, 15878.0, 21360.0, 56860.0, 120497.0, 194489.0, 272989.0];
y2 = [2.3, 13.0, 51.4, 3.0, 4.0, 5.0, 8.0, 12.0, 16.0, 39.0, 85.0, 138.0, 204.0, 779.0, 2442.0, 4944.0, 8381.0, 75829.0, 218749.0, 609079.0, 1130344.0];
y3 = [0.1, 0.3, 0.3, 1.0, 0.0, 1.0, 3.0, 5.0, 6.0, 14.0, 29.0, 37.0, 65.0, 147.0, 325.0, 407.0, 651.0, 3546.0, 4333.0, 5048.0, 10292.0];
figure,plot(x,y1);
hold on,plot(x,y2);
hold on,plot(x,y3);

as you can see it is not smooth interpolate the data in order to make it smooth
xn =1000:1000:100000000;
y1_smooth = interp1(x,y1,xn,'pchip');
y2_smooth = interp1(x,y2,xn,'pchip');
y3_smooth = interp1(x,y3,xn,'pchip');
figure,plot(xn,y1_smooth);
hold on,plot(xn,y2_smooth);
hold on,plot(xn,y3_smooth);

Change interpolation method for good results
Karthi Ramachandran
le 19 Avr 2020
What do you mean by smooth? If you want the data points to be connected
here it is .
x = [1000, 2500, 5000, 7500, 10000, 25000, 50000, 75000, 100000, 250000, 500000, 750000, 1000000, 2500000, 5000000, 7500000, 10000000, 25000000, 50000000, 75000000, 100000000];
y1 = [1.1, 4.2, 9.5, 15.0, 20.0, 52.0, 109.0, 155.0, 208.0, 520.0, 1043.0, 1567.0, 2091.0, 5279.0, 10577.0, 15878.0, 21360.0, 56860.0, 120497.0, 194489.0, 272989.0];
y2 = [2.3, 13.0, 51.4, 3.0, 4.0, 5.0, 8.0, 12.0, 16.0, 39.0, 85.0, 138.0, 204.0, 779.0, 2442.0, 4944.0, 8381.0, 75829.0, 218749.0, 609079.0, 1130344.0];
y3 = [0.1, 0.3, 0.3, 1.0, 0.0, 1.0, 3.0, 5.0, 6.0, 14.0, 29.0, 37.0, 65.0, 147.0, 325.0, 407.0, 651.0, 3546.0, 4333.0, 5048.0, 10292.0];
plot(x,y1,x,y2,x,y3)
Else if you dont want the edges(kind of discontinuities) , use interpolation one example is lagrange interpolation , see below file exchange , try it with x and y values
Catégories
En savoir plus sur Interpolation dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!