将颜色添加到正负水平条形图

时间:2018-05-08 18:08:10

标签: r ggplot2 bar-chart

我想创建一个图表来表示按人员计算的预计收入和收入,我不知道该怎么做。目标是将负差异绘制为红色垂直条形,将正差异绘制为黑色。

ggplot(appts2, 
       aes(Provider, Difference), 
       main = "Difference in Projected vs Actual Revenue") + 
  geom_bar(fill = ifelse(appts2$Difference < 0, "red", "black"), stat = 'identity') + 
  coord_flip() 

有效,但没有正确着色。

enter image description here

  Provider  Revenue Visits  Ave Total Add Ons   Total Scheduled Total Seen  Total Not Seen  TotalBatchVisits    ProjectedRevenue    Difference  MissingRecords
Smith   40911   539 75.9    38  438 404 82  486 36887.4 -4023.6 53
Antonio 4827    63  76.62   7   88  60  35  95  7278.9  2451.9  -32
Jackson 13832   171 80.89   32  155 161 20  181 14641.09    809.09  -10
Redding 23030   278 82.84   25  164 144 34  178 14745.52    -8284.48    100

1 个答案:

答案 0 :(得分:1)

您可以通过设置&#34; fill&#34;来完成此操作。美学到逻辑陈述,例如Difference < 0。然后 ggplot 会根据条形是否小于或大于零来填充条形。

切勿使用$内的aes()运算符(您引用appts2$Difference)。而是使用裸列名称,然后 ggplot 将在提供的数据集中进行搜索。 ggplot 在绘制数据之前对数据进行排序,因此提供带有$的外部向量可能会导致与其预期顺序发生奇怪冲突。

library(ggplot2)

set.seed(1)

df <- data.frame(category = letters[1:10], difference = rnorm(10))

g <- ggplot(data = df, aes(y = difference, x = category, fill = difference < 0)) +
  geom_col() +
  coord_flip()
print(g)

enter image description here