在R条形图中跨X轴反转子图

时间:2017-07-07 15:46:35

标签: python sql r ggplot2

我试图在R中的条形图中绘制数据集的两半。我想要的是数据集位于x轴的相对两侧而不是在同一侧的彼此顶部分层的轴。我的图表目前看起来像这样: enter image description here

当我希望它看起来像这样: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轴刻度没有出现?

谢谢!

1 个答案:

答案 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