2015-04-05 101 views
0

我試圖繪製數據我有作爲對數標度的直方圖從0到1,我已經試過只導入我的數據和繪圖,像這樣:使R中對數刻度直方圖

allelefreq <- read.table("allelefreqs.txt", header = TRUE) 
allelefreq <- sapply(allelefreq, as.numeric) #convert to numbers 
hist(allelefreq, xlim = range(0:1)) 

但這只是向我展示了一個0的單個大條,然後爲剩餘的情節騰出空間,而且顯然不是對數刻度。

我也嘗試使用ggplot來做到這一點,但我不成功。部分問題可能是我有大量的數據,包含接近0的非常小的數字,我認爲小容器可以幫助解決這個問題,因爲它們會分離得更多。

我不知道是否有可能在柱狀圖上創建非常小的容器,或者在某個點上切割y軸以顯示所有內容。但是有人知道如何繪製這個?

我的數據是簡單的,看起來像這樣(儘管有大約10,000個樣本):

AlleleFreq 
0.001556 
0.001985 
0.000036 
0.000024 
0.000036 
0.000024 
0.001126 
0.000012 
0.000012 
0.000012 
0.000012 
0.000012 
0.000012 
0.000012 
0.501322 
+0

這是什麼意思,你有一個「直方圖對數尺度從0到1」? – 2015-04-05 01:32:47

+0

你已經從直方圖中提取數據?您的樣本數據也涵蓋了很多數量級。我會嘗試先將數據分組。順便說一句,在這種情況下將xlim設置爲(0,1)並沒有什麼意義。 – miles2know 2015-04-05 01:33:18

+0

我想將X軸繪製在最大值爲1的對數刻度上。並且我沒有從直方圖中提取數據,但是我有我想繪製爲直方圖的數據。 – 2015-04-05 01:34:43

回答

1

萬一有人回頭看這裏的答案。這是我用來解決這個問題的代碼:

allelefreq <- read.table("allelefreqs.txt", header = TRUE) 
hist(log(allelefreq$AlleleFreq), xlim = c(-15,1), breaks=100)