R:ggplot2 中 geom_rect 的渐变填充

标签 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

最佳答案

我认为 geom_tile() 会更好 - 使用 sales 作为 yfill。使用 geom_tile(),您将为每个销售额获得单独的图 block ,并且能够看到渐变。

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

关于R:ggplot2 中 geom_rect 的渐变填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20069660/

相关文章:

r - 使用列索引而不是列名在 R dplyr 中进行变异

r - 'closure' 类型的 ggplot2 条形图对象不可子集化

mysql - 用于大型数据集的 sqlite 或 mysql

r - 如何将格式化格式应用于多列?

r - 如何以数字向量的降序显示 ggplot2 中的条形图?

r - 以下错误: TopologyException: found non-nonded intersection between LINESTRING 是什么意思

r - 显示 x 轴中断的 y 值

r - ggplot2:从纵横比中排除图例

r - 如何对 data.frames 列表进行子集化?

r - 总结 R 数据框中的因子分布