R - график двойной логарифмической плотности

У меня есть сгенерированный набор данных с распределением по степенному закону с использованием пакета «powerRlaw» со следующим кодом:

library("poweRlaw")
xmin = 1; alpha = 1.5
con_rns = rplcon(1000, xmin, alpha)

Как я могу получить логарифмический график, где по оси X отображается журнал (м), а по оси Y - журнал (частота (м)) для всех m в наборе данных?


person ahb65    schedule 15.02.2015    source источник


Ответы (2)


Я рекомендую пакет ggplot2, потому что он прост в освоении, универсален и широко используется.

#your code
library("poweRlaw")
xmin = 1; alpha = 1.5
con_rns = rplcon(1000, xmin, alpha)

#loading ggplot2
require(ggplot2)

#convert to data.frame format for ggplot2
df <- as.data.frame(con_rns)

#make plot with both axes log scale
ggplot(data = df, aes(x = con_rns)) + 
    geom_line(stat = 'bin', binwidth = 0.1) + 
    scale_x_log10() + 
    scale_y_log10()
person Curt F.    schedule 15.02.2015

Я получил решение:

library("poweRlaw")
xmin = 1; alpha = 1.5
x = rplcon(1000, xmin, alpha)
h <- hist(x, plot=F, breaks=c(seq(0,max(x)+1, .1)))
plot(h$counts, log="xy", pch=20, col="blue",xlab="Value", ylab="Frequency")

введите здесь описание изображения

person ahb65    schedule 15.02.2015