2014-01-29 52 views
0

我有下面這個數據幀,我想繪製一個直方圖,其中有df當數據量很大時用ggplot2繪製直方圖

 x 
1 -28313937 
2 -218616099 
3 -18406124 
4 20307666 
5 31985283 
6 41429217 
7 46488567 
8 47690792 
9 51127321 
10 53168291 
11 55247883 
12 -49200409 
13 33398814 
14 36198419 
15 42765257 
16 45857195 
17 43870899 
18 50557988 
19 49574516 
20 52317786 
21 50769743 

我用下面的代碼段用於繪製直方圖,

R_hist <- ggplot(df, aes(x=x)) + 
geom_histogram(binwidth=.5, colour="black", fill="white") + 
geom_vline(aes(xintercept=mean(x, na.rm=T)), color="violet", linetype="dashed", size=1) 

當我試圖調用對象R_hist,我得到一個錯誤:不能分配尺寸4.1的矢量千兆 在此外:警告信息: 1:在seq.default(round_any(範圍[1],大小,地板),round_any(範圍[2],: 達成4021Mb的總分配:見幫助(memory.size)

有人請讓我知道爲什麼直方圖沒有被繪製,因爲它應該在這裏

謝謝。

+0

可以使你的問題是否可以重現? –

+3

你正在試圖爲'-218616099'和'55247883'之間的每個值以0.5爲增量繪製一個小節...你想要21個小節,其高度用'x'表示嗎? ...... FWIW,這是一個5億個數值的矢量,它的大小太大而無法分配。 – Justin

+0

@RomanLuštrik在什麼意義上重現?我嘗試使用不同名稱的圖形對象仍然有相同的錯誤 – Amm

回答

1

如註釋中所示,您正試圖用df$x中從最小值到最大值的橫線繪製直方圖。

相反,使用geom_barstat='identity'

# grab the data provied 
df <- read.table('clipboard') 

# switch the names cause it'll bug me 
df$y <- df$x 
df$x <- row.names(df) 

# plot using some identifier (row.names in this case) 
ggplot(df, aes(x=x, y=y)) + geom_bar(stat=' 
+0

感謝您的建議 – Amm

+0

如何在ggplot中爲此數據製作箱形圖,排除負值。 'boxplot(df)'繪製整個數據 – Amm

+1

@Amm我強烈建議您閱讀R指南的一些簡介。具體來說,你想看看子集。但是,在這種情況下,您可以使用'boxplot(df [df $ x> 0,])' – Justin