Plotting multiple 3D plots on one graph
19 次查看(过去 30 天)
显示 更早的评论
Hi,
I have the following code. I want to plot all 7 on the same plot. How do I do that?
I tried hold on, but that gives me an empty plot. Thank you!
figure (4)
plot3(cm_willans,pma_1400,pme_e, '-r');
plot3(cm_willans,pma_1900,pme_e, '-m');
plot3(cm_willans,pma_2500,pme_e, '-g');
plot3(cm_willans,pma_3000,pme_e, '-b');
plot3(cm_willans,pma_4200,pme_e, '-k');
plot3(cm_willans,pma_5300,pme_e, '-y');
plot3(cm_willans,pma_6400,pme_e, '-c');
grid on
hold on
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
Also, secondary question: How do I create a legend for each one of those lines? Thanks
0 个评论
采纳的回答
Shubham Gupta
2019-10-2
Try :
figure (4)
grid on
hold on % Hold position should be at the start of plotting to overlap plots
plot3(cm_willans,pma_1400,pme_e, '-r','DisplayName','legend-1');
plot3(cm_willans,pma_1900,pme_e, '-m','DisplayName','legend-2');
plot3(cm_willans,pma_2500,pme_e, '-g','DisplayName','legend-3');
plot3(cm_willans,pma_3000,pme_e, '-b','DisplayName','legend-4');
plot3(cm_willans,pma_4200,pme_e, '-k','DisplayName','legend-5');
plot3(cm_willans,pma_5300,pme_e, '-y','DisplayName','legend-6');
plot3(cm_willans,pma_6400,pme_e, '-c','DisplayName','legend-7'); % DisplayName property to set legend name
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
legend show
Hope it helps !
5 个评论
Shubham Gupta
2019-10-3
编辑:Shubham Gupta
2019-10-3
Use subplot to create subplots on the plot. Try :
figure;
subplot(171)
plot3(cm_willans,pma_1400,pme_e, '-r','DisplayName','legend-1');
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
legend show
subplot(172)
plot3(cm_willans,pma_1900,pme_e, '-m','DisplayName','legend-2');
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
legend show
subplot(173)
plot3(cm_willans,pma_2500,pme_e, '-g','DisplayName','legend-3');
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
legend show
subplot(174)
plot3(cm_willans,pma_3000,pme_e, '-b','DisplayName','legend-4');
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
legend show
subplot(175)
plot3(cm_willans,pma_4200,pme_e, '-k','DisplayName','legend-5');
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
legend show
subplot(176)
plot3(cm_willans,pma_5300,pme_e, '-y','DisplayName','legend-6');
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
legend show
subplot(177)
plot3(cm_willans,pma_6400,pme_e, '-c','DisplayName','legend-7');
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
legend show
I am not sure if that's what you want. Let me know if you have doubts
更多回答(1 个)
OMKAR SHETYE
2021-8-28
For the legend part :- first create a vector which will have all the names for the respective plots, then call the legend function using the pre-defined vector.
figure (4)
grid on
hold on % Hold position should be at the start of plotting to overlap plots
plot3(cm_willans,pma_1400,pme_e, '-r','DisplayName','legend-1');
plot3(cm_willans,pma_1900,pme_e, '-m','DisplayName','legend-2');
plot3(cm_willans,pma_2500,pme_e, '-g','DisplayName','legend-3');
plot3(cm_willans,pma_3000,pme_e, '-b','DisplayName','legend-4');
plot3(cm_willans,pma_4200,pme_e, '-k','DisplayName','legend-5');
plot3(cm_willans,pma_5300,pme_e, '-y','DisplayName','legend-6');
plot3(cm_willans,pma_6400,pme_e, '-c','DisplayName','legend-7'); % DisplayName property to set legend name
xlabel('Cm in m/s')
ylabel('Pma in Pascals')
zlabel('Pme in Pascals')
v = ["Plot-1","Plot-2","Plot-3","Plot-4","Plot-5","Plot-6","Plot-7"]
legend(v)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Legend 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!