首页 > 解决方案 > 为正负水平条形图添加颜色

问题描述

我想创建一个图表来代表每个人的预计收入与收集的收入,但我不知道该怎么做。目标是将负差异绘制为红色垂直条,将正差异绘制为黑色。

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() 

有效,但没有正确着色。

在此处输入图像描述

  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

标签: rggplot2bar-chart

解决方案


您可以通过将“填充”美学设置为逻辑语句来完成此操作,例如Difference < 0. 然后, ggplot将根据条形是小于还是大于零来填充条形。

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

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)

在此处输入图像描述


推荐阅读