曲线图直方图相对于轴的位置不正确 [英] ggplot histogram is not in the correct position with respect the axis

查看:0
本文介绍了曲线图直方图相对于轴的位置不正确的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试以这种方式绘制直方图:

# Todo lo haremos con base en un variable aleatoria Uniforme(0,1).
set.seed(26) ; n = 10000
U<-runif(n = n)
# Supongamos que queremos simular de una exponencial.

# Función de distribución: F(X) = 1-exp(-lambda*X) = U
# Entonces, X = F^(-1)(X)= log(1-U)/(-lambda)
lambda = 1/6 # El parámetro de la exponencial que vamos a usar.
X <- log(1-U)/(-lambda)

library(ggplot2)
p <- qplot(X,
           geom="histogram",
           binwidth = 2,  
           main = "Histograma de X", 
           xlab = "Observaciones",  
           # La función "I" hace que no aparezca una descripción.
           fill=I("yellow"), 
           col=I("blue"), 
           alpha=I(0.2),
           xlim=c(0,50))+
  geom_hline(yintercept = 0,col="red",lwd=1)+
  geom_vline(xintercept = 0,col="red",lwd=1)
p

结果是:

但如您所见,y轴和直方图之间有一个空格。如何移动直方图以使其位置正确?

推荐答案

若要使直方图与y轴对齐,可以在绘图中添加以下代码行:"BORDURE=0"

边界和中心都是仓位说明符。有关更多详细信息,我已经粘贴了ggplot2 reference guide中的描述。"对于单个绘图,只能指定一个中心或边界。中心指定其中一个条柱的中心。边界指定两个条柱之间的边界。请注意,如果其中一个位于数据范围的上方或下方,则将按宽度的适当整数倍进行移位。例如,要以整数居中,请使用Width=1和CENTER=0,即使0超出数据范围。或者,即使0.5超出数据范围,也可以指定相同的对齐方式。"

在这种情况下,通过指定BORDURE=0,可以强制使仓位与图形的原点(0,0)对齐。

# Todo lo haremos con base en un variable aleatoria Uniforme(0,1).
set.seed(26) ; n = 10000
U<-runif(n = n)
# Supongamos que queremos simular de una exponencial.

# Función de distribución: F(X) = 1-exp(-lambda*X) = U
# Entonces, X = F^(-1)(X)= log(1-U)/(-lambda)
lambda = 1/6 # El parámetro de la exponencial que vamos a usar.
X <- log(1-U)/(-lambda)

library(ggplot2)
p <- qplot(X,
           geom="histogram",
           binwidth = 2,
           boundary = 0, #This controls the bin alignment with the y-axis
           main = "Histograma de X", 
           xlab = "Observaciones",  
           # La función "I" hace que no aparezca una descripción.
           fill=I("yellow"), 
           col=I("blue"), 
           alpha=I(0.2),
           xlim=c(0,50))+
  geom_hline(yintercept = 0,col="red",lwd=1)+
  geom_vline(xintercept = 0,col="red",lwd=1)
#  geom_histogram(binwidth = 1, boundary = 0, closed = "left")
p

现在您的绘图应该如下所示:

这篇关于曲线图直方图相对于轴的位置不正确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆