[r] 막대 그래프에 대해 R에서 x 축 레이블 회전

나는 행운이없는 막대 그래프에서 x 축 레이블을 45도 회전하려고합니다. 이것은 아래에있는 코드입니다.

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)



답변

DAVID의 ​​응답에 따라 수정 된 답변 :

여기에 일종의 hackish 방법이 있습니다. 더 쉬운 방법이 있다고 생각합니다. 그러나 막대 위치를 저장 barplot하고 위아래로 약간 조정 하여 막대 레이블과 레이블의 플롯 텍스트를 억제 할 수 있습니다. 다음은 mtcars 데이터 세트의 예입니다.

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)


답변

선택적 매개 변수 las = 2를 사용하십시오.

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

여기에 이미지 설명 입력


답변

기본 그래픽을 사용하여 90 도보 다 작거나 같은 각도로 x 축 레이블을 회전합니다. R FAQ 에서 수정 된 코드 :

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"

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)

여기에 이미지 설명 입력


답변

당신은 사용할 수 있습니다

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

여기에 작성되었습니다 : http://www.statmethods.net/graphs/bar.html


답변

데이터 프레임을 다음 함수에 간단히 전달할 수 있습니다 .

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)
}

용법:

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

여기에 이미지 설명 입력

필요에 따라 레이블 의 회전 각도 를 변경할 수 있습니다 .


답변

ggplot2를 사용하여 추가 레이어를 추가하는 x 축 레이블을 회전 할 수 있습니다.

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


답변

Andre Silva의 대답은 “barplot”줄에 한 가지주의 사항과 함께 저에게 매우 효과적입니다.

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

“xaxt”인수에 주목하십시오. 그것이 없으면 레이블이 60도 회전하지 않고 처음으로 두 번 그려집니다.