2017-05-10 7 views
0

私は、tmパッケージのZipf_plot関数を使って、2つの異なるドキュメント用語行列を比較しようとしています。私はR専門家ではありません。 両方に適合する方法があれば教えてくださいこの機能は?Zipf_plot():2つのオブジェクトを1つのグラフで比較する方法は?

私が知っている
Zipf_plot(x, type = "l", ...) 

、1つのウィンドウでそれらの両方(またはそれ以上)を取得する可能性があります:

par(mfrow=c()) 

が、私は1つのグラフに2つの以上のDTMで溶液を本当に感謝します。

ありがとうございます! :-)

答えて

1

あなたは例えば、par(new=T)を試したり、ニーズに応じて機能を調整しようとすることができます。:

library(tm) 
data("acq") 
data("crude") 
m1 <- DocumentTermMatrix(acq) 
m2 <- DocumentTermMatrix(crude) 
Zipf_plot(m1, col = "red") 
par(new=T) 
Zipf_plot(m2, col="blue") 
Zipf_plot_multi <- function (xx, type = "l", cols = rainbow(length(xx)), ...) { 
    stopifnot(is.list(xx) & length(xx)==length(cols)) 
    for (idx in seq_along(xx)) { 
     x <- xx[[idx]] 
     if (inherits(x, "TermDocumentMatrix")) 
      x <- t(x) 
     y <- log(sort(slam::col_sums(x), decreasing = TRUE)) 
     x <- log(seq_along(y)) 
     m <- lm(y ~ x) 
     dots <- list(...) 
     if (is.null(dots$xlab)) 
      dots$xlab <- "log(rank)" 
     if (is.null(dots$ylab)) 
      dots$ylab <- "log(frequency)" 
     if (idx==1) { 
     do.call(plot, c(list(x, y, type = type, col = cols[idx]), dots)) 
     } else { 
     lines(x, y, col = cols[idx]) 
     } 
     abline(m, col = cols[idx], lty = "dotted") 
     print(coef(m)) 
    } 
} 
Zipf_plot_multi(list(m1, m2), xlim=c(0, 7), ylim=c(0,6)) 

enter image description here

+0

ニースを!ありがとうございました! その機能はまさに私が探していたものです! :-) – Bay

関連する問題