我有以下数据:
a <- c(rep(1/9, 80), rep(1/7, 7), rep(1/5, 7), rep(1/3, 6))
如何选择1/7,1/5等比率作为x轴的中断?条形应该与间隔一样宽,即1 / 9-0的第一条,1 / 7-1 / 9的第二条等。
如何以方便的方式确定最有可能创建数据的分布?
谢谢!
答案 0 :(得分:1)
require("ggplot2")
a <- c(rep(1/9, 80), rep(1/7, 7), rep(1/5, 7), rep(1/3, 6))-0.0001
b <- c(1/10,1/9,1/7,1/5,1/3)
ggplot(NULL, aes(x=a)) +
geom_histogram(breaks = b,
colour = "black", fill = "lightblue")
答案 1 :(得分:0)
a <- c(rep(1/9, 80), rep(1/7, 7), rep(1/5, 7), rep(1/3, 6))
library(ggplot2)
gg <- data.frame(a)
ggplot(gg)+
geom_histogram(aes(x=factor(a)),fill="lightgreen")+
scale_x_discrete(labels=c("1/9","1/7","1/5","1/3"))+
labs(x="a")
编辑(对OP评论的回应)
我有一种下沉的感觉,这就是你想要的:
df<- data.frame(table(a)) # calculate frequencies
df$xmax <- as.numeric(as.character((df$a)))
df$xmin <- c(1/10,df[-nrow(df),]$xmax)
library(ggplot2)
ggplot(df)+
geom_rect(aes(xmin=xmin, xmax=xmax, ymin=0, ymax=Freq),fill="lightgreen", colour="grey50")+
scale_x_continuous(breaks=c(1/10,df$xmax),labels=c("1/10","1/9","1/7","1/5","1/3"))
很抱歉不得不说出来,但这是显示数据的一种非常可怕的方式。眼睛自然被吸引到区域,而不是高度,所以当你这样做时,频率会严重失真。