R과 ggplot을 사용하여 일부 데이터의 산점도를 그리려고합니다 .y 축의 숫자가 컴퓨터 스타일 지수 형식 (예 : 4e + 05, 5e + 05)으로 나오는 것을 제외하고는 모두 좋습니다. 받아 들일 수 없으므로 500,000, 400,000 등으로 표시하고 싶습니다. 적절한 지수 표기법을 얻는 것도 가능합니다.
플롯의 코드는 다음과 같습니다.
p <- ggplot(valids, aes(x=Test, y=Values)) +
geom_point(position="jitter") +
facet_grid(. ~ Facet) +
scale_y_continuous(name="Fluorescent intensity/arbitrary units") +
scale_x_discrete(name="Test repeat") +
stat_summary(fun.ymin=median, fun.ymax=median, fun.y=median, geom="crossbar")
도움을 주시면 감사하겠습니다.
답변
또 다른 옵션은 쉼표로 축 눈금 레이블의 형식을 패키지를 사용하는 것입니다 scales
, 그리고 추가
scale_y_continuous(name="Fluorescent intensity/arbitrary units", labels = comma)
ggplot 문에.
패키지를로드하지 않으려면 다음을 사용하십시오.
scale_y_continuous(name="Fluorescent intensity/arbitrary units", labels = scales::comma)
답변
또한 축에 적절한 ‘x10 (superscript) 5’표기법을 제공하는 다른 방법을 찾았습니다. 나는 그것이 일부 사람들에게 유용 할 수 있기를 희망하여 여기에 게시하고 있습니다. 여기 에서 코드를 얻었 으므로 아무런 크레딧도 요구하지 않습니다. 바로 Brian Diggs에게갑니다.
fancy_scientific <- function(l) {
# turn in to character string in scientific notation
l <- format(l, scientific = TRUE)
# quote the part before the exponent to keep all the digits
l <- gsub("^(.*)e", "'\\1'e", l)
# turn the 'e+' into plotmath format
l <- gsub("e", "%*%10^", l)
# return this as an expression
parse(text=l)
}
다음으로 사용할 수있는
ggplot(data=df, aes(x=x, y=y)) +
geom_point() +
scale_y_continuous(labels=fancy_scientific)
답변
x <- rnorm(10) * 100000
y <- seq(0, 1, length = 10)
p <- qplot(x, y)
library(scales)
p + scale_x_continuous(labels = comma)
답변
나는 여기 게임에 늦었지만 다른 사람들이 쉬운 해결책을 원한다면 다음과 같이 호출 할 수있는 일련의 기능을 만들었습니다.
ggplot + scale_x_continuous(labels = human_gbp)
x 또는 y 축에 대해 사람이 읽을 수있는 숫자 (또는 일반적으로 실제로는 임의의 숫자)를 제공합니다.
여기에서 함수를 찾을 수 있습니다. Github Repo
함수를 스크립트에 복사하여 호출 할 수 있습니다.
답변
Jack Aidley가 제안한 답변이 유용한 답변이라는 것을 알았습니다.
다른 옵션을 버리고 싶었습니다. 작은 숫자가 많은 계열이 있고 축 레이블에 소수점을 완전히 쓰도록 (예 : 5e-05-> 0.0005) 가정합니다.
NotFancy <- function(l) {
l <- format(l, scientific = FALSE)
parse(text=l)
}
ggplot(data = data.frame(x = 1:100,
y = seq(from=0.00005,to = 0.0000000000001,length.out=100) + runif(n=100,-0.0000005,0.0000005)),
aes(x=x, y=y)) +
geom_point() +
scale_y_continuous(labels=NotFancy)