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