ggplot直方图中的不等空格

时间:2015-03-12 11:14:25

标签: r ggplot2 histogram

我想用ggplot生成一个直方图,我有数据帧" plot_data"

plot_data<-data.frame(CLV.decile=unique(subset.customer_data$CLV.decile),
CLV=unique(subset.customer_data$mean.CLV.decile))

看起来像这样

> plot_data
  CLV.decile  CLV
1         10 1560
2          5 1525
3          1 1512

这是情节:

ylim <- c(0, 1.1*max(plot_data$CLV))

ggplot(plot_data, aes(x=CLV.decile, y=CLV)) +
geom_histogram(stat="identity",fill="skyblue",colour="black") +
labs(x="Decile",y="CLV") + geom_text(aes(label=CLV), vjust=-1) + ylim(ylim) +
scale_x_reverse(breaks = plot_data$CLV.decile)

我该如何解决?提前致谢

enter image description here

1 个答案:

答案 0 :(得分:2)

问题是你的x轴是连续的。请尝试使用:

library(ggplot2)
ylim <- c(0, 1.1*max(plot_data$CLV))

ggplot(plot_data, aes(x=as.factor(CLV.decile), y=CLV)) +
  geom_histogram(stat="identity",fill="skyblue",colour="black") +
  labs(x="Decile",y="CLV") + geom_text(aes(label=CLV), vjust=-1) + ylim(ylim) +
  scale_x_discrete(limits=as.character(plot_data$CLV.decile))

您需要CLV.decile作为因素,然后提供scale_x_discrete来指定订单。

enter image description here

它们之间的间距相等。

编辑:

这实际上是一个条形图,因此您可以考虑将geom_histogram更改为geom_bar而不改变输出。