2012-07-17 317 views
0

我正在繪製一些索引數據作爲條形圖。我想通過迫使x軸在100(以使得80的值將表現爲-20巴。)我可以在ggplot2中更改x軸與y軸相交的位置嗎?

越過強調的數字的「上方指數」和「下方指數」 -ness

這是一個更長的過程的一部分,所以很難有效地共享數據。這裏,雖然是一些說明該問題(和我的解決方案的開始)bodge-γ的代碼:

df <- data.frame(c("a","b","c"),c(118,80,65)) 
names(df) <- c("label","index") 

my.plot <- ggplot(df,aes(label,index)) 
my.plot + geom_bar() 

df$adjusted <- as.numeric(lapply(df$index,function(x) x-100)) 

my.plot2 <- ggplot(df,aes(label,adjusted)) 
my.plot2 + geom_bar() 

我可以,當然,改變我指數計算如下:圖表適當(value.new/value.old)*100-100然後標題(像「xxx相對於指數」),但這似乎很笨拙。

那麼,我也一直在測試的方法(運行上面的簡單計算,然後重新標記y軸)。真的是最好的解決方案嗎?

毫無疑問,有人是怎麼回事告訴我,這種軸操作是令人難以接受的。如果是這種情況,請他們指出我的解釋方向?至少我會學到一些東西。

+0

你能provde的要完成的任務可重複的例子嗎? – 2012-07-17 08:37:21

+0

請參閱[這裏](http://stackoverflow.com/a/27808635/937932)瞭解如何通過破解y軸標籤來實現此目的。 – nacnudus 2015-01-06 22:57:36

回答

1

你的座標系中的情節有X- (0,0)處與y軸交叉。這只是您定義座標系的方式。你當然可以在(x = 100)處畫一條水平線,但是要調用這個是x軸是假的。

你已經提出了什麼是通過將數據重新定義你的座標系。無論這種轉變是否合適,都可以通過一個可重複的例子來回答。

+0

這很有趣 - 謝謝你的明確解釋。這是一個相當普遍的標呈現有關的觀衆信息時,在銷售演示使用(和我以前的首選工具,Excel中,很容易讓我選擇這裏的「水平軸交叉於:」。) 我們的目的通常是爲了展示如何與索引相比,一羣人或多或少地同意某些陳述。顯然黑線會實現這一點 - 我想知道它是否會更「誠實」? – mediaczar 2012-07-17 10:03:07

+4

@mediaczar Excel不是真正的統計研究和可視化的基準:)。 – 2012-07-17 10:13:51

4

這並不直接回答你的問題,但不是與x軸缺失有關,爲什麼不把單個網格線厚一點?例如,

dd = data.frame(x = 1:10, y = runif(10)) 
g = ggplot(dd, aes(x, y)) + geom_point() 
g + geom_hline(yintercept=0.2, colour="white", lwd=3) 

enter image description here

或者如保羅所說,有一條黑線和一些文字:

g + geom_hline(yintercept=0.2, colour="black", lwd=3) + 
     annotate("text", x = 2, y = 0.22, label = "Reference") 

enter image description here

+0

我認爲在那裏畫一個純黑色會更清楚,並且可能會添加一段說「參考」等的文字。 – 2012-07-17 08:46:50