gpt4 book ai didi

r - 为 geom_bar 图创建垂直颜色渐变

转载 作者:行者123 更新时间:2023-12-04 04:30:05 26 4
gpt4 key购买 nike

我已经搜索和搜索,但我似乎无法找到一种优雅的方式来做到这一点!

我有一个数据集 DataData$x 组成(日期)和 Data$y (数字从 0 到 1)

我想在条形图中绘制它们:

ggplot(Data) + geom_bar(aes(x = x, y = y, fill = y, stat = "identity")) +
scale_fill_gradient2(low = "red", high = "green", mid = "yellow", midpoint = 0.90)

结果看起来像这样

Click to view image

但是,我想在垂直方向上给每个条形一个渐变,范围从 0(红色)到 y(绿色取决于 y)。有没有办法顺利做到这一点?

我试图看看我是否可以将图片强加到图表上作为一个黑客,但我不能只将它强加在条形上,除非以一种 super super 丑陋的方式。

最佳答案

据我所知,不存在,但您可以操纵数据来生成它。

library(ggplot2)

df = data.frame(x=c(1:10),y=runif(10))

prepGradient <- function(x,y,spacing=max(y)/100){
stopifnot(length(x)==length(y))
df <- data.frame(x=x,y=y)
newDf = data.frame(x=NULL,y=NULL,z=NULL)
for (r in 1:nrow(df)){
n <- floor(df[r,"y"]/spacing)
for (s in c(1:n)){
tmp <- data.frame(x=df[r,"x"],y=spacing,z=s*spacing)
newDf <- rbind(newDf,tmp)
}
tmp <- data.frame(x=df[r,"x"],y=df[r,"y"]%%spacing,z=df[r,"y"])
newDf <- rbind(newDf,tmp)
}
return(newDf)
}

df2 <- prepGradient(df$x,df$y)

ggplot(df2,aes(x=x,y=y,fill=z)) +
geom_bar(stat="identity") +
scale_fill_gradient2(low="red", high="green", mid="yellow",midpoint=median(df$y))+
ggtitle('Vertical Gradient Example') +
theme_minimal()

enter image description here

关于r - 为 geom_bar 图创建垂直颜色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48210231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com