ggplot与fill和scale_y_log10()

时间:2017-06-16 06:29:07

标签: r ggplot2 histogram

我尝试使用ggplot' s geom_histogram生成直方图,根据渐变为条形图着色,然后记录它们。

以下是代码:

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)
df$cut <- cut(df$val,bins)
df$cut <- factor(df$cut,level=unique(df$cut))

然后,

ggplot(data=df,aes_string(x="val",y="..count..+1",fill="cut"))+
  geom_histogram(show.legend=FALSE)+
  scale_color_manual(values=cut.cols,labels=levels(df$cut))+
  scale_fill_manual(values=cut.cols,labels=levels(df$cut))+
  scale_y_log10()

给出:enter image description here

fill中删除aesthetics

ggplot(data=df,aes_string(x="val",y="..count..+1"))+
  geom_histogram(show.legend=FALSE)+
  scale_color_manual(values=cut.cols,labels=levels(cuts))+
  scale_fill_manual(values=cut.cols,labels=levels(cuts))+
  scale_y_log10()

给出:enter image description here

任何想法为什么直方图条在两个图之间有所不同,并使第一个图与第二个图相似?

1 个答案:

答案 0 :(得分:2)

OP 尝试使用ggplot的geom_histogram生成直方图,根据渐变颜色显示条形图...

OP已经完成了分箱(有10个分箱),但随后正在调用?geomhistogram,它默认使用30个分箱进行分箱(参见geom_bar())。

使用cut代替val代替ggplot(data = df, aes_string(x = "cut", y = "..count..+1", fill = "cut")) + geom_bar(show.legend = FALSE) + scale_color_manual(values = cut.cols, labels = levels(df$cut)) + scale_fill_manual(values = cut.cols, labels = levels(df$cut)) + scale_y_log10()

geom_histogram()

图表变为:

this

使用带有填充条形的 Adapter1.OnDayDeleted += (o,e) => { Day day = e.Day; DM.ListOfDays.Remove(day); Adapter1.NotifyDataSetChanged(); Adapter1 = new Adapters.DayObject(Activity, DM.ListOfDays); ListViewDays.Adapter = Adapter1; Helpers.Common.SetListViewHeightBasedOnChildren(ListViewDays); }; 不那么简单,如this answerHow to fill histogram with color gradient?中{{3}}所述