Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

How to save multiple plots produced by netVisual_circle? #446

Open
lwlive opened this issue Jul 30, 2022 · 3 comments
Open

How to save multiple plots produced by netVisual_circle? #446

lwlive opened this issue Jul 30, 2022 · 3 comments
Labels
documentation Improvements or additions to documentation suggestion

Comments

@lwlive
Copy link

lwlive commented Jul 30, 2022

Dear,
when I use cellchat ,I am wondering how to save multiple plots which produced from following code:
par(mfrow = c(1,2), xpd=TRUE)
netVisual_diffInteraction(cellchat, weight.scale = T)
netVisual_diffInteraction(cellchat, weight.scale = T, measure = "weight")

I have tried following commands but only one figure in the png file.
png("interaction_count_and_strength_circle2.png,width = 6007, height = 6003, res=300)
par(mfrow = c(1,2))
netVisual_circle(cellchat@net$count, vertex.weight = groupSize, weight.scale = T,margin=0, label.edge= F, title.name = "Number of interactions")
netVisual_circle(cellchat@net$weight, vertex.weight = groupSize, weight.scale = T,margin=0, label.edge= F, title.name = "Interaction weights/strength")
dev.off()

can you offer some help?

Thanks!
Wei

@sqjin
Copy link
Owner

sqjin commented Aug 5, 2022

@lwlive Have you tried grDevices::pdf ... dev.off() or 'grDevices::cairo_pdf ... dev.off()'

@CroixJeremy2
Copy link

Hello, I have been struggling with such issue all afternoon, but after some research online and on the 'issues' forum of sqjin/CellChat, I have found a simple solution. So I share it here for other people that might have the same problem in the future.

library(extrafont)
List_of_pathways = sort(cellchat@netP$pathways) #or any other list of pathways you are interested in (could be only 2 pathways for example).
#All pathways on the same graph
png(filename = "All_pathways.png", bg = "transparent", width = 2000, height = 1250)
par(mfrow = c(5, 7), xpd = TRUE)
for (i in List_of_pathways) {
	netVisual_aggregate(object = cellchat, layout = "circle", signaling = as.character(i))
}
dev.off()
#Individual pathways (put in one folder named outs)
for (i in List_of_pathways) {
	png(filename = paste("outs/", as.character(i), ".png", sep = ""), bg = "transparent", width = 750, height = 750)
	par(mfrow = c(1, 1), xpd = TRUE)
	netVisual_aggregate(object = cellchat, layout = "circle", signaling = as.character(i))
	dev.off()
}

Here in the code above, I export my images in the png format, but it also works for pdf of course.

Here in the code above, I use the netVisual_aggregate() function, but it works with the other similar functions of the CellChat package (I have not tried all of them to be honest though).

Note that I had to load the extrafont library to get the titles appeared correctly according to #24 (and also in #18 ).

I am not an expert of the par() function usage, but I have noticed that png() or pdf() or cairo_pdf() must always be BEFORE par(mfrow = c(X, Y), xpd = TRUE), otherwise it will cause problems. For example, when using pdf(), it creates one pdf with each pathway on a different page of the pdf...

Anyway, I hope it will help you.
Best regards,

@sqjin
Copy link
Owner

sqjin commented Jan 22, 2024

@CroixJeremy2 Thank you!

@sqjin sqjin added documentation Improvements or additions to documentation suggestion labels Jan 22, 2024
@sqjin sqjin pinned this issue Jan 22, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
documentation Improvements or additions to documentation suggestion
Projects
None yet
Development

No branches or pull requests

3 participants