2010-04-13 53 views
15
df <- data.frame(age=c(10,10,20,20,25,25,25),veg=c(0,1,0,1,1,0,1)) 
g=ggplot(data=df,aes(x=age,y=veg)) 
g=g+stat_summary(fun.y=mean,geom="point") 

點數反映了每個年齡的素食的平均值,這是我期望並希望在用下面的命令更改軸限制後保留的素數。更改ylim(軸限制)將丟棄超出範圍的數據。這怎麼能被阻止?

g=g+ylim(0.2,1) 

改變軸限制與上述命令不幸導致蔬菜== 0子集從數據丟棄,得到

「警告消息:含有缺失值(stat_summary)刪除了4行」

這是不好的,因爲現在數據圖(stat_summary mean)省略了veg == 0點。這怎麼能被阻止?我只是想避免顯示圖的空白部分 - 從0到.2的縱座標,但不要從stat_summary計算中刪除關聯的數據。

回答

25

你可以做,通過指定座標系統:

df <- data.frame(age=c(10,10,20,20,25,25,25),veg=c(0,1,0,1,1,0,1)) 
g=ggplot(data=df,aes(x=age,y=veg)) 
g=g+stat_summary(fun.y=mean,geom="point") 
g+coord_cartesian(ylim=c(0.2,1)) #do not use +ylim() here 
+0

該得到的一切呈現在相同的規模,這是很好的,避免輟學超範圍的值,這是很好的,但現在y軸標籤只顯示實際包含值的範圍,我認爲這是不理想的。不知道如何使軸反映劇情的全部範圍。 – 2012-02-20 15:59:08

+3

有人知道爲什麼你必須指定座標系以避免丟失數值嗎?爲什麼不把它作爲默認設置?這裏的例子可能不是最好的一個,但是如果你有很大的誤差條,並且想把y軸的範圍限制到一個顯示通用模式,這個解決方案就可以完美工作。如果我使用ylim()或scale_y_continuous(),超出範圍的誤差線根本不會被繪製。 – Mikko 2013-09-26 09:29:44