您的标题应更改为“闪避条形图”而不是 2D 直方图,因为直方图与条形图不同,在 x 轴上具有连续比例,并且它们基本上用于比较单变量数据的分布或基于依赖因素建模的单变量数据的分布. 您正在尝试比较 colB 与 colC ,它们可以使用 2D 散点图有效地可视化,但不能使用条形图。使用直方图比较 colB 和 colC 分布的更好方法是分别绘制两个直方图并检查数据点位置的变化。
如果您想比较 colB 和 colC 的分布,请尝试以下代码:我确实根据您的数据描述对值进行了四舍五入以获得合理的数据。请注意,通过排列进行随机抽样,每次运行相同的代码时,分布都会有轻微的变化,但这不会影响 colB 和 colC 之间分布的推断。
library("ggplot2")
# 44 datapoints between 1-10
a <- rep(1:10, 4)
a <- c(a, sample(a, size=4, replace=FALSE))
# 25 datapoints between 11-20
b <- rep(11:20, 2)
b <- c(b, sample(b, size=5, replace=FALSE))
# 31 datapoints between 21-30
c <- rep(21:30, 3)
c <- c(c, sample(c, size=1, replace=FALSE))
colB <- c(a, b, c)
# 64 datapoints between 1-10
a <- rep(1:10, 6)
a <- c(a, sample(a, size=4, replace=FALSE))
# 36 datapoints between 11-20
b <- rep(11:20, 3)
b <- c(b, sample(b, size=6, replace=FALSE))
colC <- c(a, b)
df <- data.frame(cbind(colB, colC=colC))
write.table(df, file = "data")
data <- read.table("data", header=TRUE)
data
ggplot(data=data, aes(x=colB, xmin=1, xmax=30)) + stat_bin(binwidth = 1)
ggplot(data=data, aes(x=colC, xmin=1, xmax=30)) + stat_bin(binwidth = 1)
# if you want density distribution, then you can try something like this:
ggplot(data=data, aes(x=colB, y = ..density.., xmin=1, xmax=30)) + stat_bin(binwidth = 1)
ggplot(data=data, aes(x=colC, y = ..density.., xmin=1, xmax=30)) + stat_bin(binwidth = 1)
HTH-Sathish