2017-07-07 37 views
0

我想在R中的條形圖中繪製數據集的兩半。我想要的是數據集位於x軸的兩側而不是分層在軸的同一側相互頂部。我的表目前看起來是這樣的: enter image description here在R條形圖中反轉跨X軸的子圖

當我希望它看起來像這樣:enter image description here

這裏是我的代碼現在:

p <- ggplot(df_customer, aes(factor(income), percent_travel, fill = gender)) + 
    geom_bar(stat="identity", data = subset(df_customer, gender == "F")) + 
    geom_bar(stat="identity", data = subset(df_customer, gender == "M"), stackdir = "down") + 
    scale_x_discrete(name = "Annual Income ($1000's)", breaks=seq(-10, 100, 10)) + 
    scale_y_discrete(name = "Income Spent on Travel (%)", breaks=seq(0, 8, 2)) 
p 

我試圖用stackdir,但我認爲這是一個僅適用於散點圖的屬性。我可能能夠通過使其中一個數據集中的所有值爲負來得到我想要的結果,但它看起來不是理想的解決方案。

此外,任何想法,爲什麼我的Y軸規模沒有顯示出來?

謝謝!

+0

添加代表數據集將讓你更有幫助的響應。 –

回答

1

這是一種方法。請注意,y是一個連續的尺度,而不是離散的。

p <- ggplot(df_customer, aes(x = as.factor(income), 
          y = percent_travel * ((-1)^(gender == "F")), 
          fill = gender)) + 
    geom_bar(stat = "identity") + 
    scale_x_discrete(name = "Annual Income ($1000's)") + 
    scale_y_continuous(name = "Income Spent on Travel (%)", breaks=seq(-8, 8, 2)) 
p 

enter image description here

+0

這工作完美,謝謝!有什麼辦法可以讓x軸下方的y值顯示爲正值而不是負值?因爲在技術上所有的數據都應該是正數,即使繪製在軸線下方 –

+0

您可以通過設置'scale_y_continuous'選項中'breaks'和'labels'的值來完成。看看'?scale_y_continuous' - 我沒有嘗試過,但看起來很有前途。 –