फ़ाइल करने के लिए मल्टीप्लॉट को सहेजें, मैं वास्तव में निम्न समस्या के साथ आपकी सहायता की सराहना करता हूं। मैं एक प्लॉट को एक फाइल में सहेजने के कई तरीकों से जानता हूं। मेरा सवाल है: मैं फ़ाइल में मल्टीप्लॉट को सही ढंग से कैसे सहेजूं?आर -
आरंभ करने के लिए, मैं एक अनुभवी आर उपयोगकर्ता नहीं हूं। मैं अपने प्लॉट बनाने के लिए ggplot2 का उपयोग करता हूं, और मुझे शायद एक और बात का जिक्र करना चाहिए कि मैं RStudio GUI का उपयोग करता हूं। आर कुकबुक से example का उपयोग करके, मैं एक खिड़की में एकाधिक भूखंड बनाने में सक्षम हूं।
मैं इस तथाकथित मल्टीप्लॉट को फ़ाइल (अधिमानतः जेपीईजी) में सहेजना चाहता हूं, लेकिन किसी भी तरह ऐसा करने में विफल रहता है।
मैं इस प्रकार multiplot बना रहा हूं:
##define multiplot function
multiplot <- function(..., plotlist=NULL, cols) {
require(grid)
# Make a list from the ... arguments and plotlist
plots <- c(list(...), plotlist)
numPlots = length(plots)
# Make the panel
plotCols = cols # Number of columns of plots
plotRows = ceiling(numPlots/plotCols) # Number of rows needed, calculated from # of cols
# Set up the page
grid.newpage()
pushViewport(viewport(layout = grid.layout(plotRows, plotCols)))
vplayout <- function(x, y)
viewport(layout.pos.row = x, layout.pos.col = y)
# Make each plot, in the correct location
for (i in 1:numPlots) {
curRow = ceiling(i/plotCols)
curCol = (i-1) %% plotCols + 1
print(plots[[i]], vp = vplayout(curRow, curCol))
}
}
## define subplots (short example here, I specified some more aesthetics in my script)
plot1a <- qplot(variable1,variable2,data=Mydataframe1)
plot1b <- qplot(variable1,variable3,data=Mydataframe1)
plot1c <- qplot(variable1,variable2,data=Mydataframe2)
plot1d <- qplot(variable1,variable3,data=Mydataframe2)
## plot in one frame
Myplot <- multiplot(plot1a,plot1b,plot1c,plot1d, cols=2)
यह वांछित परिणाम देता है। समस्या तब उत्पन्न होती है जब मैं किसी फ़ाइल को सहेजने का प्रयास करता हूं। मैं मैन्युअल रूप से RStudio (निर्यात -> साजिश को छवि के रूप में सहेजें) में कर सकता हूं, लेकिन मैं सब कुछ एक स्क्रिप्ट में चलाने के लिए चाहता हूं। मैं केवल subplot1d को सहेजने का प्रबंधन करता हूं (जो last_plot() है), और पूर्ण मल्टीप्लॉट नहीं।
क्या मैं अभी तक की कोशिश की है:
ggsave
ggsave(filename = "D:/R/plots/Myplots.jpg")
यह केवल subplot 1d में परिणाम का उपयोग करते हुए सहेजा जा।
jpeg(), प्रिंट() और dev.off()
jpeg(filename = "Myplot.jpg", pointsize =12, quality = 200, bg = "white", res = NA, restoreConsole = TRUE) print(Myplot) dev.off()
यह एक पूरी तरह से सफेद छवि (बस पृष्ठभूमि मुझे लगता है) में परिणाम का उपयोग करना। प्रिंट (माईप्लॉट) वापस लौटाता है।
यह सुनिश्चित नहीं है कि मैं यहां क्या कर रहा हूं। मेरी समझ की कमी आर कारण है कि मैं समाधान खोजने की कोशिश कर रहा हूं। क्या कोई यह समझा सकता है कि मैं क्या गलत कर रहा हूं और शायद मेरी समस्या को हल करने का एक तरीका सुझा सकता हूं?
आप ** ग्रिडएक्स्ट्रा :: ग्रिड का भी उपयोग कर सकते हैं।व्यवस्था करें (plot1a, plot1b, plot1c, plot1d, ncol = 2) ** – dickoa
ग्रिडएक्स्ट्रा पैकेज में ग्रिड.रेंज नहीं है, इसमें arrangeGrob शामिल है जो समान कार्यक्षमता प्रदान करता है। मुझे grid.arrange नामक फ़ंक्शन को भी याद रखना प्रतीत होता है, शायद लेखक ने पैकेज में फ़ंक्शन शीर्षक बदल दिए। –
'grid.arrange' gridExtra में होना चाहिए। संयोग से, 'arrangeGrob' बनाम 'मल्टीप्लॉट' के लाभों में से एक यह है कि यह' ggsave' के साथ संगत है, और आप बाद में उपयोग के लिए समग्र ग्रोब स्टोर कर सकते हैं। – baptiste