R:ggplot2中geom_rect的渐变填充

时间:2013-11-19 10:59:33

标签: r ggplot2

我想在R中创建一个类似下面的图形,以显示某个人或公司相对于同行的排名。得分总是在1到100之间。

rank

虽然我可以接受任何ggplot解决方案,但在我看来,最好的方法是使用geom_rect,然后调整并添加baptiste对this question的回答中描述的箭头。然而,我对一些更简单的事情感到失望 - 让geom_rect正确填充如下图所示右侧指南中所示的渐变。这应该很容易。我做错了什么?

library(ggplot2)
library(scales)

mydf <- data.frame(id = rep(1, 100), sales = 1:100)

ggplot(mydf) +
    geom_rect(aes(xmin = 1, xmax = 1.5, ymin = 0, ymax = 100, fill = sales)) +
    scale_x_discrete(breaks = 0:2, labels = 0:2) +
    scale_fill_gradient2(low = 'blue', mid = 'white', high = 'red', midpoint = 50) +
    theme_minimal()

geom_rect

1 个答案:

答案 0 :(得分:3)

我认为geom_tile()会更好 - 对salesy使用fill。使用geom_tile(),您将获得每个销售值的单独磁贴,并且能够看到渐变。

ggplot(mydf) +
  geom_tile(aes(x = 1, y=sales, fill = sales)) +
  scale_x_continuous(limits=c(0,2),breaks=1)+
  scale_fill_gradient2(low = 'blue', mid = 'white', high = 'red', midpoint = 50) +
  theme_minimal()

enter image description here