2011-12-15 89 views
1

我嘗試使用下面的代碼,以使與GGPLOT2箱線圖:ggplot boxplot的位置閃避警告?

p <- ggplot(data, aes(d$score, reorder(d$names d$scores, median))) + geom_boxplot() 

我叫因素的名稱和整數叫做分數。

我的代碼會生成一個圖表,但圖形不會顯示這些框(僅顯示行),並且會顯示一條警告消息,「position_dodge需要非重疊的x間隔。」我試圖用geom_boxplot(width=5)來調整高度和寬度,但這似乎不能解決問題。任何人都可以爲我的問題提出一個可能的解

我應該指出我的boxplot很大,在y軸上有大約200個名稱值)。也許這是問題?

回答

18

組數不是問題;即使只有兩組時,我也能看到同樣的情況。問題是ggplot2垂直繪製箱形圖(沿y連續繪製,沿着x分類),並且您試圖水平繪製它們(沿x連續繪製,沿着y分類)。

此外,您的示例有幾個語法錯誤,因爲我們沒有data/d而無法重現。

開始與一些模擬數據

dat <- data.frame(scores=rnorm(1000,sd=500), 
        names=sample(LETTERS, 1000, replace=TRUE)) 

你的示例代碼修正版本:

ggplot(dat, aes(scores, reorder(names, scores, median))) + geom_boxplot() 

ggplot(dat, aes(scores, reorder(names, scores, median))) + geom_boxplot()

這是你看到的水平線。

如果改爲放在x軸的絕對的和在y的連續你

ggplot(dat, aes(reorder(names, scores, median), scores)) + geom_boxplot() 

ggplot(dat, aes(reorder(names, scores, median), scores)) + geom_boxplot()

最後,如果你想翻轉座標軸,您可以使用coord_flip()。如果你正在做更復雜的事情,可以有一些額外的問題,但對於基本的盒式機可以工作。

ggplot(dat, aes(reorder(names, scores, median), scores)) + 
    geom_boxplot() + coord_flip() 

ggplot(dat, aes(reorder(names, scores, median), scores)) + geom_boxplot() + coord_flip()

+0

哇,謝謝!這正是我遇到的問題。我非常感謝徹底的答覆。 – drbunsen 2011-12-15 19:33:20