मैंने कल किसी ऑब्जेक्ट के भीतर एक प्लॉट संग्रहीत करने के बारे में this प्रश्न पूछा। मैंने पहले दृष्टिकोण को लागू करने की कोशिश की (मुझे पता है कि मैंने यह निर्दिष्ट नहीं किया है कि मैं अपने मूल प्रश्न में qplot()
का उपयोग कर रहा था) और देखा कि यह अपेक्षा के अनुसार काम नहीं करता है।सूची में प्लॉट ऑब्जेक्ट्स को संग्रहीत करना
library(ggplot2) # add ggplot2
string = "C:/example.pdf" # Setup pdf
pdf(string,height=6,width=9)
x_range <- range(1,50) # Specify Range
# Create a list to hold the plot objects.
pltList <- list()
pltList[]
for(i in 1 : 16){
# Organise data
y = (1:50) * i * 1000 # Get y col
x = (1:50) # get x col
y = log(y) # Use natural log
# Regression
lm.0 = lm(formula = y ~ x) # make linear model
inter = summary(lm.0)$coefficients[1,1] # Get intercept
slop = summary(lm.0)$coefficients[2,1] # Get slope
# Make plot name
pltName <- paste('a', i, sep = '')
# make plot object
p <- qplot(
x, y,
xlab = "Radius [km]",
ylab = "Services [log]",
xlim = x_range,
main = paste("Sample",i)
) + geom_abline(intercept = inter, slope = slop, colour = "red", size = 1)
print(p)
pltList[[pltName]] = p
}
# close the PDF file
dev.off()
मैंने इस मामले में नमूना संख्याओं का उपयोग किया है, इसलिए कोड की प्रतिलिपि बनाई गई है तो कोड चलाता है। मैंने इस पर कुछ घंटों बिताए लेकिन मुझे पता नहीं चल रहा कि क्या गलत हो रहा है। यह समस्या के बिना पीडीएफएस का पहला सेट लिखता है, इसलिए मेरे पास सही प्लॉट के साथ 16 पीडीएफ हैं।
फिर जब मैं कोड के इस टुकड़े का उपयोग करें:
string = "C:/test_tabloid.pdf"
pdf(string, height = 11, width = 17)
grid.newpage()
pushViewport(viewport(layout = grid.layout(3, 3)))
vplayout <- function(x, y){viewport(layout.pos.row = x, layout.pos.col = y)}
counter = 1
# Page 1
for (i in 1:3){
for (j in 1:3){
pltName <- paste('a', counter, sep = '')
print(pltList[[pltName]], vp = vplayout(i,j))
counter = counter + 1
}
}
dev.off()
परिणाम मैं पिछले रेखीय मॉडल लाइन (abline
) हर ग्राफ पर है, लेकिन डेटा नहीं बदलता है। जब मैं भूखंडों की अपनी सूची की जांच करता हूं, ऐसा लगता है कि वे सभी हालिया साजिश (abline
ऑब्जेक्ट के अपवाद के साथ) द्वारा अधिलेखित हो जाते हैं।
एक कम महत्वपूर्ण माध्यमिक प्रश्न यह था कि प्रत्येक पृष्ठ पर कई भूखंडों के साथ एक मुली पेज पीडीएफ कैसे उत्पन्न किया जाए, लेकिन मेरे कोड का मुख्य लक्ष्य प्लॉट को उस सूची में स्टोर करना था जिसे मैं बाद की तारीख में एक्सेस कर सकता था।
धन्यवाद आरसीएस और जोनाथन, इस समस्या को हल किया। मैं डेटा तर्क से अनजान था और डेटा को स्टोर करने के लिए इसका उपयोग कैसे किया जा सकता था। मैं अब पुस्तक के उस खंड की जांच कर रहा हूं। – womble