我想在 R 中创建一个类似于下图的图形,以显示某个人或公司相对于其同行的排名。分数始终在 1 到 100 之间。
虽然我可以接受任何 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_tile()
会更好 - 使用 sales
作为 y
和 fill
。使用 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()
关于R:ggplot2 中 geom_rect 的渐变填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20069660/