R이 축약 된 축 레이블 플로팅을 중지하도록 강제합니다 (예 : ggplot2의 1e + 00).


111

ggplot2에서 축 레이블이 축약되는 것을 어떻게 막을 수 1e+00, 1e+01있습니까? 예를 들어 일단 플로팅 된 x 축을 따라? 이상적으로는 R이 실제 값을 표시하도록 강제하고 싶습니다 1,10.

많은 도움을 주셔서 감사합니다.

답변:


134

나는 당신이 이것을 찾고 있다고 생각합니다.

require(ggplot2)
df <- data.frame(x=seq(1, 1e9, length.out=100), y=sample(100))
# displays x-axis in scientific notation
p  <- ggplot(data = df, aes(x=x, y=y)) + geom_line() + geom_point()
p

# displays as you require
require(scales)
p + scale_x_continuous(labels = comma)

2
이것은 효과가 있었다. 감사합니다. 흥미롭게도 스케일 패키지를 사용하는 ggplot2의 축에 대해 어떤 다른 '레이블'옵션이 있습니까?
JPD

3
이 ggplot2.org 페이지 도 방문하십시오 . 유사한 문제로 저에게 매우 도움이되었습니다.
Marta Karas 2014

64

다음과 같은 것을 시도 했습니까?

options(scipen=10000)

플로팅하기 전에?


3
이것은 과학적 표기법을 사용하기로 결정할 때 더 높은 페널티 를 설정함으로써 작동합니다 . 이 답변에 대한 자세한 설명 : stackoverflow.com/a/18600721/1080804
ecoe

35

@Arun이 만든 업데이트에 대한 업데이트입니다. 오늘 시도했지만 실제로 작동하지 않았기 때문에

+ scale_x_continuous(labels = scales::comma)

2
@Arun의 대답은있는 그대로 잘 작동해야합니다. 아마도 require(scales)? comma저울 이 포함 된 패키지를 가져옵니다 . 이미 알고 있듯이 미리 요구하는 대신 참조 할 때 패키지를 지정할 수도 있습니다.
cincodenada

17

보다 일반적인 솔루션으로 scales::format_format과학적 표기법을 제거하는 데 사용할 수 있습니다 . 또한 scales::comma쉼표로만 구분하는 것과 달리 레이블을 정확히 표시 할 방법을 제어 할 수 있습니다 .

예를 들면 :

require(ggplot2)
require(scales)
df <- data.frame(x=seq(1, 1e9, length.out=100), y=sample(100))

# Here we define spaces as the big separator
point <- format_format(big.mark = " ", decimal.mark = ",", scientific = FALSE)

# Plot it
p  <- ggplot(data = df, aes(x=x, y=y)) + geom_line() + geom_point()
p + scale_x_continuous(labels = point)

8

스케일 라이브러리가 필요하지 않은 솔루션이 있습니다.

당신은 시도 할 수 있습니다:

# To deactivate scientific notation on y-axis:

    p + scale_y_continuous(labels = function(x) format(x, scientific = FALSE))

# To activate scientific notation on y-axis:

    p + scale_y_continuous(labels = function(x) format(x, scientific = TRUE))

# To deactivate scientific notation on x-axis:

    p + scale_x_continuous(labels = function(x) format(x, scientific = FALSE))

# To activate scientific notation on x-axis:

    p + scale_x_continuous(labels = function(x) format(x, scientific = TRUE))

2

R이 과학적 표기법에 사용하는 패널티를 더 높게 설정하는 가장 간단한 일반적인 해결책이 아닙니까?

scipen(), 편한 번호로 설정 합니다.

예를 들어 차트에서 축 최대 값이 100,000 일 가능성이있는 경우 설정 scipen(200000)하면 R (및 ggplot)이 200000 미만의 모든 숫자에 대해 표준 표기법을 사용하고 ggplot 함수에 줄을 추가 할 필요가 없습니다.


0

분수도 포함하도록 원래 질문을 확장 (예 : 1, 0.1, 0.01, 0.001 등)하고 후행 0을 피합니다.

p + scale_x_continuous(labels = function(x) sprintf("%g", x))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.