Установите нормальную посадку в гистограмме с логарифмической шкалой x

Я надеюсь, что некоторые из вас помогут мне. Я имею дело с построением нормального графика в моей гистограмме с логарифмической шкалой x. Я использую логарифмическую шкалу, потому что нормальная гистограмма с моими данными имеет длинный хвост. Мои коды такие..

breaks<- c(0,0.01, 0.05, 0.1,0.2,0.5,1,2,5,10,20,50,100,200,300) #bins
major <- c(0.1,1,10,100)

H <- hist(log10(B),plot=B) #using data "B"

plot(H$mids,H$counts,type="n",
  xaxt="n",
  xlab="B",ylab="Counts",
  main="Histogram of B",
  bg="lightgrey"
)
abline(v=log10(breaks),col="lightgrey",lty=2)
abline(v=log10(major),col="lightgrey")
abline(h=pretty(H$counts),col="lightgrey")
plot(H,add=T,freq=T,col="blue")
#Position of ticks
at <- log10(breaks)

#Creation X axis
axis(1,at=at,labels=10^at)
curve(dnorm(x, mean=mean(B), sd=sd(B)), add=TRUE) # 1st try
lines(density(B))  # 2nd try

xfit<-seq(min(B),max(B),length=40) # 3rd try
yfit<-dnorm(xfit,mean=mean(B),sd=sd(B)) 
yfit<-yfit*diff(H$mids[1:2])*length(B) 
lines(xfit, yfit, col="red", lwd=2) 

Но 1-я, 2-я, 3-я попытки не сработали. Пожалуйста, дайте мне знать, как добавить нормальное вписывание в мою гистограмму. Большое спасибо за Вашу помощь. Сумма


person user2928318    schedule 13.11.2013    source источник


Ответы (1)


Я только что изменил вашу первую попытку, чтобы вы получили то, что хотите:

B <- rlnorm(10000)
H <- hist(log10(B), freq = FALSE, col="blue", xaxt="n", xlab="B") 
at <- H$mids
axis(1,at=at,labels=round(10^at,2))
curve(dnorm(x, mean=mean(log10(B)), sd=sd(log10(B))), add=TRUE)

Надеюсь, поможет,

Алекс

person alko989    schedule 13.11.2013
comment
Спасибо, Алекс. Это работает, но я хочу поместить свои первоначальные числа B по оси X, а не по журналу (B). Есть ли другой способ? - person user2928318; 13.11.2013
comment
Я отредактировал свой ответ - я думал, что эта часть уже решена в вашем вопросе. В своем ответе я только изменил freq=FALSE в hist и добавил log10 по мере необходимости в dnorm - person alko989; 13.11.2013
comment
@ user2928318, если ответ alko правильно отвечает на ваш вопрос, рассмотрите возможность его принятия, нажав на зеленую галочку под стрелками голосования. спасибо - person Andre Silva; 18.12.2013