Какой метод можно использовать для печати нескольких графиков eclust на одной странице? - PullRequest
0 голосов
/ 17 января 2019

Ожидаемый результат сценария:

enter image description here

Я пытаюсь получить несколько кластерных графиков из eclust, напечатанных на одной странице, но не могу сделать это несколькими способами.

#install.packages("gridExtra")`
#install.packages("factoextra")`
#install.packages("eclust")`
#install.packages("ggplotify")`

require(gridExtra)
library(grid)
library(lattice)
library(factoextra)
library(ggplotify)

#KMEANS -----------------------------
km <- eclust(tsne_df, "kmeans", k = NClust)
km.sil <- fviz_silhouette(km)

#PAM CLUSTERING ---------------------
pam <- eclust(tsne_df, "pam", k = NClust)
pam.sil <- fviz_silhouette(pam)

#METHOD_1
grid.arrange(grob(km), grob(pam), ncol=2)

#METHOD_2
multiple_plot <- arrangeGrob(grob(km), grob(pam), nrow = 2, ncol = 1)
print(multiple_plot)

#METHOD_3
def.par <- par(no.readonly = TRUE)
par(oma=c(0,0,3,0))#set top margin to have more space
par(mfrow=c(2,2))
par(mar=c(5,4,4,2)+0.1)
par(cex.axis = .7)

eclust(tsne_df, "kmeans", k = NClust)
fviz_silhouette(km)
eclust(tsne_df, "pam", k = NClust)
fviz_silhouette(pam)

Я ожидал, что с помощью любого из методов получим 4 графика с 2 диаграммами кластеризации и 2 диаграммами, показывающими графы силуэтов, в сумме с сеткой 2x2. Однако, похоже, что ни один из них не работает с графиками eclust, поскольку они представляют собой другой тип объекта, и даже путем преобразования их в тип gList он все еще не работает. Я новичок в R и не могу понять, каким будет альтернативный метод построения графика. Ниже приведена ссылка, показывающая ожидаемый результат, который я собрал вручную в InDesign.

1 Ответ

0 голосов
/ 02 июля 2019

У меня была та же проблема (я хотел построить 35 графиков fviz_silhouette) и решил ее, используя функцию plot_grid из пакета cowplot.

В вашем случае может быть что-то вроде этого (я не уверен, откуда в вашем примере берется левая часть графика 2 x 2, поэтому я добавил функцию fviz_cluster):

install.packages("cowplot")
library(cowplot)

# KMEANS -----------------------------

km <- eclust(tsne_df, "kmeans", k = NClust)
km.clus <- fviz_cluster(km)
km.sil <- fviz_silhouette(km)

# PAM CLUSTERING ---------------------
pam <- eclust(tsne_df, "pam", k = NClust)
pam.clus <- fviz_cluster(pam)
pam.sil <- fviz_silhouette(pam)

# PLOT -------------------------------

list.plot <- list() #list to store the plots
list.plot[[1]] <- km.clus
list.plot[[2]] <- km.sil    
list.plot[[3]] <- pam.clus
list.plot[[4]] <- pam.sil

plot_grid(plotlist = list.plot, ncol = 2)

Надеюсь, что это работает для вас или кого-либо еще, кто имеет эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...