2017-05-22 257 views
0

因此,首先,我對編程和R(一個星期以前)完全陌生,因此事先致歉。ggplot2 axis:設置間隔,對數刻度和指數而不是科學

我怎麼會用格式化GGPLOT2 y軸下面的方式?:

  1. 間隔我要的數量。 (例如,10,視覺上等距離間隔)
  2. 對數刻度
  3. 指數,而不是科學(我想10 1,10 2,10 3,而不是1E + 01,1e + 02,1e + 03)

我可以找到一些這些個別問題的答案,但它們不能協同工作。

這是我的圖。我不知道這是否有幫助。

ggplot(DFM,AES(應變,值))+ geom_bar(AES(填充=可變),STAT = 「同一性」,位置= 「躲閃」)

底線是: 目前在y軸是:1e + 02,1e + 05,1e + 08 我希望它是:10 1,10 2,10 3,10 4,10 5,10 8,10 7,10 8,10 8,10 10

+0

,如果你使用的內置數據幀,或提供的代碼創建最小可重複一個 – yeedle

+0

老實說,我不知道怎麼會更有幫助。我正試圖谷歌此刻, – myflow

+1

看看[這裏](https://stackoverflow.com/questions/15178081/pretty-axis-labels-for-log-scale-in-ggplot) - '圖書館(ggplot2); library(scales); df < - data.frame(x = 1:100,y = 10 ^(1:100)); ggplot(df,aes(x,y))+ geom_point()+ scale_y_log10 (break = trans_breaks(「log10」,function(x)10^x,n = 10),labels = trans_format(「log10」,math_format(10^.x)))'例如應該讓你關閉。還請閱讀幫助'?scales :: trans_breaks'等來了解如何調整所有這些。 – lukeA

回答

0

這裏有一些指導使用tidyr::population數據集)

1.

library(ggplot2) 
library(scales) 
library(tidyr) 
ggplot(population, aes(country, population)) + 
    geom_bar(aes(fill=year),stat="identity",position="dodge") + 
    scale_y_continuous(breaks = pretty_breaks(n = 10)) 

2.

library(ggplot2) 
library(scales) 
library(tidyr) 
ggplot(population, aes(country, population)) + 
    geom_bar(aes(fill=year),stat="identity",position="dodge") + 
    scale_y_log10() 

把他們放在一起:


library(ggplot2) 
library(scales) 
library(tidyr) 
ggplot(population, aes(country, population)) + 
    geom_bar(aes(fill=year),stat="identity",position="dodge") + 
    scale_y_log10(labels= trans_format(log10, math_format(10^.x)), 
       breaks =trans_breaks(log10, function(x) 10^x, 10)) 

+0

完美!非常感謝!背景:我最初詢問日誌的比例,重新閱讀答案(編輯之後),假定我第一次誤讀,並刪除了我的評論。 – myflow

相關問題