bestsource

막대 그림에 대해 R의 x축 레이블 회전

bestsource 2023. 6. 18. 16:11
반응형

막대 그림에 대해 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)

옵션 매개 변수 las=2를 사용합니다.

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

enter image description here

DAVID의 응답에 따라 편집된 답변:

여기에 일종의 해킹 방법이 있습니다.더 쉬운 방법이 있을 것 같습니다.그러나 다음 위치에서 막대 위치를 저장하여 막대 레이블과 레이블의 플롯 텍스트를 억제할 수 있습니다.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)

기본 그래픽을 사용하여 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 = "",
        xaxt = "n", # Do not plot the default labels
        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

데이터 프레임을 다음 기능으로 간단하게 전달할 수 있습니다.

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)

enter image description here

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

사용할 수 있습니다.

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

여기에 쓰여 있습니다: http://www.statmethods.net/graphs/bar.html

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

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

막대 그래프의 설명서에서 추가 파라미터에 대해 읽을 수 있습니다(...) 함수 호출로 전달할 수 있습니다.

...    arguments to be passed to/from other methods. For the default method these can 
       include further arguments (such as axes, asp and main) and graphical 
       parameters (see par) which are passed to plot.window(), title() and axis.

그래픽 매개변수의 문서화에서 (의 문서화)par) 확인할 수 있는 항목:

las
    numeric in {0,1,2,3}; the style of axis labels.

    0:
      always parallel to the axis [default],

    1:
      always horizontal,

    2:
      always perpendicular to the axis,

    3:
      always vertical.

    Also supported by mtext. Note that string/character rotation via argument srt to par does not affect the axis labels.

그것이 통과하는 이유입니다.las=245°는 아니지만 레이블을 수직으로 만듭니다.

Andre Silva의 답변은 "막대 줄거리" 줄에 한 가지 주의 사항과 함께 저에게 매우 효과적입니다.

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

xaxt 인수를 확인합니다.이 값이 없으면 레이블이 처음에는 60도 회전 없이 두 번 그려집니다.

언급URL : https://stackoverflow.com/questions/10286473/rotating-x-axis-labels-in-r-for-barplot

반응형