2012-06-13 68 views
3

我製作了散點圖,y軸範圍從0運行到800,000。我如何使y軸刻度顯示數字(「0」,「200,000」,「400,000」,「600,000」,「800,000」)而不是其標準格式(「0e + 00」,「2e + 05」 ,「4e + 05」,「6e + 05」,「8e + 05」)?將y軸刻度標籤從標準形式更改爲完整數

回答

6

scipen選項?options。這裏有一個例子:

set.seed(42) 
dat <- data.frame(x = runif(100, min = 0, max = 1000000), 
        y = runif(100, min = 0, max = 1000000)) 

layout(matrix(1:2, ncol = 2)) 
plot(y ~ x, data = dat) 
opt <- options(scipen = 10) 
plot(y ~ x, data = dat) 
options(opt) 
layout(1) 

主要生產:

scipen_plot

其他選項包括在plot()通話抑制軸與axes = FALSE然後用axis()使用自定義供給的標籤添加自己的軸format();詳情請參閱?format。如果你真的希望數字中的「,」分開數千,那麼這就是要走的路。

+0

+1 - 除非您(OP)在您的刻度標籤中需要逗號,否則這是要走的路。如果你需要它們,我相信你必須使用'format()'或類似的東西,就像我的答案一樣。 –

+0

是的,我不確定'''是否有意或無意。 –

+0

這很完美。感謝您解釋這兩種方法,我發現它非常有用。 – uhohrondo

1

使用格式和科學= FALSE:

a<-c(100000, 200000) 
format(a, scientific=FALSE) 
+0

我認爲你的意思是沿着用自己的標籤繪製自己的軸的方向添加一些東西?否則這是沒有意義的。 –

+0

是的,你必須創建自己的軸標籤,如上面Josh所示。它適用於貨幣。 – tcash21

4

下面是一個例子,讓你開始:

x <- 1:10 
y <- runif(10) * 1e6 

yrange <- c(0, 1e6) 
ticks <- pretty(yrange) 
labels <- format(ticks, big.mark=",", scientific=FALSE) 

plot(y~x, yaxt="n", ylim = yrange) 
axis(2, at = ticks, labels = labels, las = 1, cex.axis=0.7) 

enter image description here