How do I label the points in a multidimensional scaling plot?
4 次查看(过去 30 天)
显示 更早的评论
I am studying how to do multidimensional scaling in matlab. I am able to reproduce the output (2D plot) from a published example (http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/122-multidimensional-scaling-essentials-algorithms-and-r-code/).
The output is based on the data table found in the Swiss Fertility and Socioeconomic Indicators (1888) (https://rpubs.com/krishnakuyate/Swiss_FS_Data).
I constructed a 47x47 array of Euclidean distances (D) of the Swiss Fertility and Socioeconomic Indicators and ran Y=cmdscale(D,2) to obtain a plot of these data:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1710566/image.jpeg)
My plot looks very similar (but inverted mirror image) to the published plot from http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/122-multidimensional-scaling-essentials-algorithms-and-r-code/:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1710571/image.jpeg)
But how can I get matlab to label the points in my plot as is done above in the published figure?
0 个评论
采纳的回答
Andres Adam
2024-6-6
Hi Stephen, check out the first example in the documentation of cmdscale:
There is no direct option in cmdscale to add text, but we can do so by using the function text, with the point coordinates offset by a little bit, and a cell array of names:
plot(Y(:,1),Y(:,2),'o') % Your plot
text(Y(:,1)+25,Y(:,2),names)
where the variable names is something like
>> names = {'Herens', 'Sierre', 'Conthey', ... }; (in the appropriate order!)
2 个评论
Andres Adam
2024-6-6
I did not know that feature! Thanks for pointing it out, and be careful to not confuse points when labeling manually :)
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!