2010-11-10 19 views
40

Çizmek istediğim noktaların (x, y) konumunu gösteren iki vektörüm var.Bir arsada sıralı olarak etiketleme noktaları

Bunları nasıl çizileceğini biliyorum, ancak 1, 2, 3, 4 ... etiketlerini arsa üzerinde görünen etiketlerle etiketlemek isterim. Etiketler vektör içindeki sırasını temsil eder.

cevap

67

İşte bunu yapmanın bir yolu:

p = rand(10,2); 
labels = cellstr(num2str([1:10]')); %' # labels correspond to their order 

plot(p(:,1), p(:,2), 'rx') 
text(p(:,1), p(:,2), labels, 'VerticalAlignment','bottom', ... 
          'HorizontalAlignment','right') 
Ben sizden komplo özellikle text` `ek seçenek olarak` 'Ebeveyn' axesHandle` eklemek yararlıdır bulmak

alt text

+3

Metnin gerçekte doğru şekilde göründüğünden emin olmak için bir işlev içinde. – Jonas

+0

Merhaba, Bunu "set" ile nasıl yaparsınız? h = metin (p (:, 1), p (:, 2), etiketler); set (h, 'Konum', [p (:, 1) p (:, 2)], 'Dize', etiketler); 'Çalışmıyor. – k4lls

+0

@ k4lls: Çünkü 'h' bir dizi işlem grafiğidir (oluşturulan her" etiket "ayrı bir" text "örneğidir). Ya her bir h (i) 'yi bir döngüde ayarlarsınız ya da özel sözdizimini kullanırsınız:' set (h, {'Position'}, num2cell (p, 2), {'String'}, labels). Dokümanlardaki hakkında daha fazla bilgi edinin: http://www.mathworks.com/help/matlab/ref/set.html#f67-575595 – Amro