एक विकल्प सिर्फ साजिश, कहते हैं, एक ही कोड आप अभी उपयोग किया जा का उपयोग कर एक समय में individual
के छह स्तर है। आपके डेटा के प्रत्येक उप-समूह के लिए, आपको इसे कई बार फिर से शुरू करने की आवश्यकता होगी। आप Baseball
डेटा फ्रेम का उपयोग कर नमूना डेटा प्रदान की है नहीं, इसलिए यहाँ है एक उदाहरण:
library(ggplot2)
library(vcd) # For the Baseball data
data(Baseball)
pdf("baseball.pdf", 7, 5)
for (i in seq(1, length(unique(Baseball$team87)), 6)) {
print(ggplot(Baseball[Baseball$team87 %in% levels(Baseball$team87)[i:(i+5)], ],
aes(hits86, sal87)) +
geom_point() +
facet_wrap(~ team87) +
scale_y_continuous(limits=c(0, max(Baseball$sal87, na.rm=TRUE))) +
scale_x_continuous(limits=c(0, max(Baseball$hits86))) +
theme_bw())
}
dev.off()
कोड ऊपर भूखंडों के चार पृष्ठों, एक पृष्ठ के लिए छह पहलुओं के साथ प्रत्येक के साथ एक पीडीएफ फाइल का उत्पादन करेगा। तुम भी छह पहलुओं के प्रत्येक समूह के लिए चार अलग-अलग पीडीएफ फाइलों, एक बना सकते हैं:
for (i in seq(1, length(unique(Baseball$team87)), 6)) {
pdf(paste0("baseball_",i,".pdf"), 7, 5)
...ggplot code...
dev.off()
}
एक अन्य विकल्प, अगर आप अधिक लचीलेपन की जरूरत है, प्रत्येक स्तर के लिए एक अलग साजिश बनाने के लिए है (जो है, प्रत्येक अद्वितीय मान) फ़ेसिंग चर के और एक सूची में सभी व्यक्तिगत भूखंडों को बचाओ। फिर आप प्रत्येक पृष्ठ पर किसी भी प्लॉट को बाहर रख सकते हैं। यही कारण है कि शायद overkill यहाँ है, लेकिन here's an example जहां लचीलापन काम में आता।
सबसे पहले, के भूखंडों के सभी बना सकते हैं। हम team87
का उपयोग हमारे फ़ेसटिंग कॉलम के रूप में करेंगे। तो हम team87
के प्रत्येक स्तर के लिए एक साजिश बनाना चाहते हैं। हम team87
द्वारा डेटा बंटवारे और डेटा के प्रत्येक सबसेट के लिए एक अलग भूखंड बनाकर यह करूँगा।
नीचे दिए गए कोड में, split
team87
के प्रत्येक स्तर के लिए डेटा को अलग डेटा फ्रेम में विभाजित करता है। lapply
आवरण क्रमिक रूप से खिलाती प्रत्येक डेटा ggplot में सबसेट हर टीम के लिए एक साजिश बनाने के लिए। हम plist
में उत्पादन, (इस मामले में) की एक सूची 24 भूखंडों को बचाने के।
plist = lapply(split(Baseball, Baseball$team87), function(d) {
ggplot(d, aes(hits86, sal87)) +
geom_point() +
facet_wrap(~ team87) +
scale_y_continuous(limits=c(0, max(Baseball$sal87, na.rm=TRUE))) +
scale_x_continuous(limits=c(0, max(Baseball$hits86))) +
theme_bw() +
theme(plot.margin=unit(rep(0.4,4),"lines"),
axis.title=element_blank())
})
अब हम पीडीएफ फ़ाइल में समय पर छह भूखंड रखेंगे। नीचे दो विकल्प हैं, एक चार अलग पीडीएफ फाइलों के साथ, प्रत्येक छह भूखंडों के साथ, दूसरा एक चार पेज पीडीएफ फाइल के साथ। मैंने नीचे के भूखंडों में से एक में भी चिपकाया है। अक्षरों को जोड़ने के लिए left
और bottom
तर्कों का उपयोग करके प्लॉट को बाहर रखने के लिए हम grid.arrange
का उपयोग करते हैं।
library(gridExtra)
# Four separate single-page PDF files, each with six plots
for (i in seq(1, length(plist), 6)) {
pdf(paste0("baseball_",i,".pdf"), 7, 5)
grid.arrange(grobs=plist[i:(i+5)],
ncol=3, left="Salary 1987", bottom="Hits 1986")
dev.off()
}
# Four pages of plots in one PDF file
pdf("baseball.pdf", 7, 5)
for (i in seq(1, length(plist), 6)) {
grid.arrange(grobs=plist[i:(i+5)],
ncol=3, left="Salary 1987", bottom="Hits 1986")
}
dev.off()
हाय @ eipi10! यह अद्भुत काम करता था और समझने में आसान था! हालांकि मुझे एक मुद्दा है। ऐसा लगता है कि कोड मेरे व्यक्तियों में से एक को पसंद नहीं करता है और मुझे यह त्रुटि मिल रही है। यह इस व्यक्ति को '= सूची (gList में grobs त्रुटि (705-70773 = सूची (grobs = सूची (सूची (x = 0.5, y = 0) में हिट करने के बाद प्रिंटिंग बंद कर देता है।5, "gList" में केवल 'grobs' की अनुमति है ' कोई भी मदद महान होगी! – LearningTheMacros
क्या उस व्यक्ति के डेटा के बारे में कुछ ऐसा है जिसके परिणामस्वरूप कोई साजिश नहीं बनाई जा रही है? यदि कोई साजिश नहीं है, तो साजिश कोड का आउटपुट एक ग्रोब (ग्राफिक्स ऑब्जेक्ट) नहीं होगा। उदाहरण के लिए, क्या उस व्यक्ति के लिए सभी डेटा गायब हैं या ऐसा कुछ? अपनी साजिश बनाने का प्रयास करें, लेकिन उस व्यक्ति के लिए केवल डेटा के साथ डेटा फ्रेम ggplot फ़ीड करें और देखें कि क्या होता है। उस व्यक्ति के लिए डेटा देखें और देखें कि इसके बारे में कुछ स्पष्ट रूप से अलग है या नहीं। – eipi10
साजिश तब बनाई गई जब मैंने हबर्टेल के सुझाव का उपयोग किया, इसलिए मुझे पता नहीं चला। किसी भी तरह से, मैं आपका जवाब समझ गया और यह भविष्य में मेरी मदद करेगा। फिर से धन्यवाद! – LearningTheMacros