我想用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)
我该如何解决?提前致谢
答案 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
来指定订单。
它们之间的间距相等。
编辑:
这实际上是一个条形图,因此您可以考虑将geom_histogram
更改为geom_bar
而不改变输出。