it-swarm.dev

Barplot için R'de dönen x ekseni etiketleri

X ekseni etiketlerinin şanssız bir barplotta 45 derece döndürülmesini sağlıyorum. Aşağıda sahip olduğum kod:

barplot(((data1[,1] - average)/average) * 100,
        srt       = 45,
        adj       = 1,
        xpd       = TRUE,
        names.arg = data1[,2],
        col       = c("#3CA0D0"),
        main      = "Best Lift Time to Vertical Drop Ratios of North American Resorts",
        ylab      = "Normalized Difference",
        yaxt      = 'n',
        cex.names = 0.65,
        cex.lab   = 0.65)
82
David

DAVID'IN YANITINA AİT EDİLEN CEVAP:

İşte size bir tür hackish yolu. Sanırım daha kolay bir yol var. Ancak çubuk konumlarını barplot öğesinden kaydederek çubuk etiketlerini ve arsa metnini bastırabilir ve biraz yukarı ve aşağı ayar yapabilirsiniz. İşte mtcar veri setine bir örnek:

x <- barplot(table(mtcars$cyl), xaxt="n")
labs <- paste(names(table(mtcars$cyl)), "cylinders")
text(cex=1, x=x-.25, y=-1.25, labs, xpd=TRUE, srt=45)
55
Tyler Rinker

isteğe bağlı parametre las = 2 kullanın.

barplot(mytable,main="Car makes",ylab="Freqency",xlab="make",las=2)

enter image description here

232
Michael Z

X ekseni etiketlerini 90 dereceye eşit veya daha küçük açıyla döndürmek istiyorsanız, aşağıdaki yaklaşımı deneyin:

Sütunların 'genişlikleri sütunların aralık aralığına eşitlemek için barplot argümanı space=1 kullanır.

Bu şekilde, Tyler Rinker'in cevabında @BenBarnes tarafından belirtilen R SSS içinde verilen kodu uyarlamak mümkün oldu.

par(mar = c(7, 4, 2, 2) + 0.2) #add room for the rotated labels

#use mtcars dataset to produce a barplot with qsec colum information
mtcars = mtcars[with(mtcars, order(-qsec)), ] #order mtcars data set by column "qsec" (source: http://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns-in-r)

end_point = 0.5 + nrow(mtcars) + nrow(mtcars)-1 #this is the line which does the trick (together with barplot "space = 1" parameter)

barplot(mtcars$qsec, col="grey50", 
        main="",
        ylab="mtcars - qsec", ylim=c(0,5+max(mtcars$qsec)),
        xlab = "",
        space=1)
#rotate 60 degrees, srt=60
text(seq(1.5,end_point,by=2), par("usr")[3]-0.25, 
     srt = 60, adj= 1, xpd = TRUE,
     labels = paste(rownames(mtcars)), cex=0.65)

enter image description here

28
Andre Silva

Kullanabilirsin

par(las=2) # make label text perpendicular to axis

Burada yazılmıştır: http://www.statmethods.net/graphs/bar.html

7
vlad

Veri çerçevenizi aşağıdaki işlevine geçirebilirsiniz:

rotate_x <- function(data, column_to_plot, labels_vec, rot_angle) {
    plt <- barplot(data[[column_to_plot]], col='steelblue', xaxt="n")
    text(plt, par("usr")[3], labels = labels_vec, srt = rot_angle, adj = c(1.1,1.1), xpd = TRUE, cex=0.6) 
}

Kullanımı:

rotate_x(mtcars, 'mpg', row.names(mtcars), 45)

enter image description here

Etiketlerin dönme açısını gerektiği gibi değiştirebilirsiniz.

7
Cybernetic

Ek bir katman ekleyerek x ekseni etiketini döndürmek için ggplot2'yi kullanabilirsiniz.

theme(axis.text.x = element_text(angle = 90, hjust = 1))
4
user5947894

Andre Silva'nın cevabı benim için harika çalışıyor, "barplot" çizgisinde bir uyarı var:

barplot(mtcars$qsec, col="grey50", 
    main="",
    ylab="mtcars - qsec", ylim=c(0,5+max(mtcars$qsec)),
    xlab = "",
    xaxt = "n", 
    space=1)

"Xaxt" argümanına dikkat edin. Onsuz, etiketler iki kez, ilk defa 60 derece döndürülmeden çizilir.

2
Alvaro Gonzalez