2016-04-11 19 views
1

Topluluğa yeni katılıyorum ve çevrimiçi olarak belirtilen çözümleri ararken çok sayıda deneme yaptıktan sonra bunu yayınlıyorum. Ancak, bunu çözemedim.geom_text kullanarak ve gfplot2 kullanarak koşullu etiketleme

Bu bana şu sonucu verir

dat<-read.csv("Harvard tutorial/Rgraphics/dataSets/EconomistData.csv") 
g <- ggplot(dat, aes(dat$CPI, dat$HDI)) 

g1 <- g + theme_bw() + geom_smooth(method = "lm", formula = y ~log(x), se = FALSE, color = "Red", linetype = 1, weight = 3) + 
    geom_point(aes(color = Region), size = 4, fill = 4, alpha = 1/2, shape = 1) + 
    scale_x_continuous(name = "Corruption Perception Index", breaks = NULL) + 
    scale_y_continuous(name = "Human Development Index") + 
    scale_color_manual(name = "Region of the world", values = c("#24576D", "#099DD7", "#28AADC", "#248E84", "#F2583F", "#96503F")) + 
    theme(axis.text.x = element_text(angle = 90, size = 15)) 

Aşağıdaki kod:

enter image description here

Ancak

, ben

pointsToLabel <- c("Russia", "Venezuela", "Iraq", "Myanmar", "Sudan", 
        "Afghanistan", "Congo", "Greece", "Argentina", "Brazil", 
        "India", "Italy", "China", "South Africa", "Spane", 
        "Botswana", "Cape Verde", "Bhutan", "Rwanda", "France", 
        "United States", "Germany", "Britain", "Barbados", "Norway", "Japan", 
        "New Zealand", "Singapore") 

g2 <- g1 + geom_text(aes(dat$CPI, dat$HDI, label = dat$Country), data = subset(x = dat,subset = Country %in% pointsToLabel)) 

alıyorum koduna aşağıdaki satırları eklediğinizde aşağıdaki hata

Hata:

birisi bana bu konuda yardım edebilir x, y, etiket: Estetik ya uzunluğu 1 veya veri (27) ile aynı olmalıdır? Her şeyden

'data.frame': 173 obs. of 6 variables: 
$ X  : int 1 2 3 4 5 6 7 8 9 10 ... 
$ Country : Factor w/ 173 levels "Afghanistan",..: 1 2 3 4 5 6 7 8 9 10 ... 
$ HDI.Rank: int 172 70 96 148 45 86 2 19 91 53 ... 
$ HDI  : num 0.398 0.739 0.698 0.486 0.797 0.716 0.929 0.885 0.7 0.771 ... 
$ CPI  : num 1.5 3.1 2.9 2 3 2.6 8.8 7.8 2.4 7.3 ... 
$ Region : Factor w/ 6 levels "Americas","Asia Pacific",..: 2 3 5 6 1 3 2 4 3 1 ... 
+1

İlk olarak, aes' 'içeride' veri $ sütunu'dur kullanmaktan kaçınmalısınız. Bunun yerine, yalnızca ggplot (data = dat) 'da hangi verilerin kullanılacağını belirttiğiniz için sütun adını kullanın. İkincisi, 'dat' sütunlarını 'pointsToLabel' vektörü ile (etiketsiz noktaları boşluklar veya NA'lar ile) sütun haline getirebilirsiniz, ardından o sütunu etiket olarak ggplot olarak belirtin. – oshun

+0

Önerileriniz için teşekkürler! – mvikred

cevap

4

İlk aşağıdaki gibi

verileri bilgi için Harvard Tutorial on GGPLOT2

kaynaklandığı, veri kümesi yapısı aes() içinde $ kullanmayın vardır. Sonra umarım istediğiniz arsa sonuçlanan .. .. subsetting parçası denemek

g2 <- g1 + 
    geom_text(aes(CPI, HDI, label = Country), data = dat[dat$Country %in% pointsToLabel,]) 

düzeltmek için: enter image description here

+0

Teşekkürler çocuklar. Bu işe yaradı. Ayrıca dplyr kitaplığında filtre kullanarak çalıştım. – mvikred

İlgili konular