簡體   English   中英

我可以在ggplot2中更改x軸與y軸相交的位置嗎?

[英]Can I change where the x-axis intersects the y-axis in ggplot2?

我正在將一些索引數據繪制為條形圖。 我想通過強制x軸在100處交叉來強調數字的“上方索引”和“下方索引”的性質(這樣80的值將顯示為-20 bar。)

這是一個更長的過程的一部分,因此很難有效地共享數據。 但是,這里有一些說明問題(以及我的解決方案的開始)的博奇代碼:

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然后適當地為圖表(value.new/value.old)*100-100 (類似於“相對於索引的xxx”),但這似乎很笨拙。

因此,我一直在測試的方法(運行上面的簡單計算,然后重新標記y軸)是否真的是最好的解決方案?

毫無疑問,有人會告訴我,這種軸操縱方式是令人討厭的。 如果是這種情況,請他們指出問題的方向嗎? 至少到那時我會學到一些東西。

這並不能直接回答您的問題,而是為什么不讓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)

在此處輸入圖片說明

或如保羅建議的那樣,用黑線和一些文字表示:

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

在此處輸入圖片說明

繪圖的坐標系在(0,0)處具有x軸和y軸的交點。 這只是定義坐標系的方式。 您當然可以在(x = 100)處繪制一條水平線,但是稱它為x軸是錯誤的。

您已經提出的建議是通過轉換數據來重新定義坐標系。 通過您身邊的可重復示例,可以更輕松地回答此轉換是否合適。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM