R Zipf_plot():如何在一个图形中比较两个对象?
我试图使用tm软件包中的Zipf_plot函数来比较两个不同的文档术语矩阵-我不是R专家。。 也许你可以告诉我,是否有一种方法可以同时满足这两种功能R Zipf_plot():如何在一个图形中比较两个对象?,r,tm,zipf,R,Tm,Zipf,我试图使用tm软件包中的Zipf_plot函数来比较两个不同的文档术语矩阵-我不是R专家。。 也许你可以告诉我,是否有一种方法可以同时满足这两种功能 Zipf_plot(x, type = "l", ... ) 我知道,有可能在一个窗口中同时获得两个或多个: par(mfrow=c()) 但我非常欣赏在一个图中包含两个或更多DTM的解决方案 提前谢谢!:- 您可以尝试使用parnew=T或根据需要调整功能,例如: library(tm) data("acq") data("crude") m
Zipf_plot(x, type = "l", ... )
我知道,有可能在一个窗口中同时获得两个或多个:
par(mfrow=c())
但我非常欣赏在一个图中包含两个或更多DTM的解决方案
提前谢谢!:- 您可以尝试使用parnew=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))
美好的非常感谢。这个函数正是我一直在寻找的!:-