Y 축 수치를 막대 그래프에서 백분율로 변경하려면 어떻게해야합니까?


107

그림과 같이 y 축을 백분율로 어떻게 변경할 수 있습니까? y 축 범위를 변경할 수 있지만 백분율로 만들 수는 없습니다. 여기에 이미지 설명 입력

답변:


236

사용하다:

+ scale_y_continuous(labels = scales::percent)

또는 백분율에 대한 형식화 매개 변수를 지정하려면 다음을 수행하십시오.

+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))

(이 명령 labels = percent은 ggplot2 버전 2.2.1 이후로 사용되지 않음)


3
입력 할 필요가 없다는 점이 마음에 들었습니다 library(scales).
Akshay Gaur

그리고 scales::percent(accuracy = 1)작동하지 않는 이유 는 *_format()버전이 대신에 함수를 생성 하기 때문 percent()입니다.
MokeEire

62

원칙적으로 모든 재 포맷 기능을 labels 매개 변수에 .

+ scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %  

또는

+ scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign 

재현 가능한 예 :

library(ggplot2)
df = data.frame(x=seq(0,1,0.1), y=seq(0,1,0.1))

ggplot(df, aes(x,y)) + 
  geom_point() +
  scale_y_continuous(labels = function(x) paste0(x*100, "%"))

8
외부 종속성이없는 경우 +1. 나는 Hadley가 ggplot2와 scales의 저자이기 때문에 그다지 중요하지 않다는 것을 알고 있습니다. 그러나이 솔루션은 여전히 ​​높이 평가됩니다.
Mark White

44

ggplot2그리고 scales패키지는이 작업을 수행 할 수 있습니다

y <- c(12, 20)/100
x <- c(1, 2)

library(ggplot2)
library(scales)
myplot <- qplot(as.factor(x), y, geom="bar")
myplot + scale_y_continuous(labels=percent)

stat()옵션이 해제되어 오류 메시지가 표시되는 것 같습니다 . 이 시도:

library(scales)

myplot <- ggplot(mtcars, aes(factor(cyl))) + 
          geom_bar(aes(y = (..count..)/sum(..count..))) + 
          scale_y_continuous(labels=percent)

myplot

2

위의 @Deena에서 가져온 레이블의 함수 수정은 생각했던 것보다 더 다양합니다. 예를 들어, 계수 된 변수의 분모가 140 인 ggplot이 있습니다. 다음과 같이 그녀의 예를 사용했습니다.

scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))

이를 통해 140 분모에 대한 백분율을 얻은 다음 기본적으로 설정된 이상한 숫자가 아닌 25 % 단위로 척도를 깰 수있었습니다. 여기서 핵심은 스케일 브레이크가 여전히 백분율이 아닌 원래 카운트로 설정된다는 것입니다. 따라서 구분은 0에서 분모 값까지 여야하며 "breaks"의 세 번째 인수는 분모를 원하는 레이블 구분 수로 나눈 값입니다 (예 : 140 * 0.25 = 35).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.