我试图绘制一个geom_histogram,其中的条形被一个渐变着色。
这就是我想做的:
library(ggplot2)
set.seed(1)
df <- data.frame(id=paste("ID",1:1000,sep="."),val=rnorm(1000),stringsAsFactors=F)
ggplot(df,aes_string(x="val",y="..count..+1",fill="val"))+geom_histogram(binwidth=1,pad=TRUE)+scale_y_log10()+scale_fill_gradient2("val",low="darkblue",high="darkred")但得到:

知道怎么用定义的渐变来着色吗?
发布于 2017-05-05 02:02:57
不确定是否可以由val填充,因为直方图中的每个条表示一个点数集合。
但是,您可以使用cut填充分类箱。例如:
ggplot(df, aes(val, fill = cut(val, 100))) +
geom_histogram(show.legend = FALSE)

发布于 2017-05-08 16:30:41
只是为了完整。
如果我希望手动选择渐变,下面是我的建议:
数据:
library(ggplot2)
set.seed(1)
df <- data.frame(id=paste("ID",1:1000,sep="."),val=rnorm(1000),stringsAsFactors=F)颜色:
bins <- 10
cols <- c("darkblue","darkred")
colGradient <- colorRampPalette(cols)
cut.cols <- colGradient(bins)
cuts <- cut(df$val,bins)
names(cuts) <- sapply(cuts,function(t) cut.cols[which(as.character(t) == levels(cuts))])情节:
ggplot(df,aes(val,fill=cut(val,bins))) +
geom_histogram(show.legend=FALSE) +
scale_color_manual(values=cut.cols,labels=levels(cuts)) +
scale_fill_manual(values=cut.cols,labels=levels(cuts))

发布于 2021-10-05 06:41:58
与手动绑定不同,另一种选择是利用stat_bin计算的回收箱,将..x.. (或在离散比例情况下的factor(..x..) )或after_stat(x)映射到fill美学中。
手工计算回收箱的一个问题是,每个回收站最终有多个组,必须对其计算计数(即使大多数情况下计数为零),这些组在直方图中相互叠加。特别是,如果像在这个post中看到的那样,将计数标签添加到直方图中,就会出现问题,因为在这种情况下,每个bin会有多个标签。
library(ggplot2)
set.seed(1)
df <- data.frame(id = paste("ID", 1:1000, sep = "."), val = rnorm(1000), stringsAsFactors = F)
ggplot(df, aes(x = val, y = ..count.. + 1, fill = ..x..)) +
geom_histogram(binwidth = .1, pad = TRUE) +
scale_y_log10() +
scale_fill_gradient2(name = "val", low = "darkblue", high = "darkred")
#> Warning: Duplicated aesthetics after name standardisation: pad

https://stackoverflow.com/questions/43795211
复制相似问题