Bir seçenek sadece arsa, diyelim ki, artık kullandığınız aynı kodu kullanarak bir defada individual
altı seviyeleri etmektir. Verilerinizin her bir alt kümesi için bir kez, birkaç kez yinelemeniz gerekir. Sen Baseball
veri çerçevesini kullanarak bir örnek örnek verileri temin yüzden burada değil:
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()
Yukarıdaki kod parsellerin dört sayfalarında, bir sayfaya altı yüzlere sahip her biriyle bir PDF dosyası üretecektir. Ayrıca altı yönleriyle her grup için dört ayrı PDF dosyaları tek oluşturabilirsiniz: daha fazla esneklik gerekiyorsa
for (i in seq(1, length(unique(Baseball$team87)), 6)) {
pdf(paste0("baseball_",i,".pdf"), 7, 5)
...ggplot code...
dev.off()
}
Diğer bir seçenek, her seviye için ayrı arsa oluşturmaktır (yani, her benzersiz değer) Kıymetlendirme değişkeninin bir listesi ve tek tek tüm parselleri bir listede saklar. Ardından, her sayfadaki herhangi bir sayıyı düzenleyebilirsiniz. Muhtemelen buradaki aşırı sıkıntı, ama esnekliğin geldiği here's an example.
İlk olarak, tüm grafikleri oluşturalım. team87
'u, profil sütunumuz olarak kullanacağız. Dolayısıyla, team87
'un her seviyesi için bir çizim yapmak istiyoruz. Verileri team87
'a bölerek ve verilerin her bir alt kümesi için ayrı bir çizim yaparak yaparız. Aşağıdaki kodda split
, team87
numaralı her bir düzey için verileri ayrı veri çerçevelerine ayırır. lapply
sarıcı, her bir takım için arsa oluşturmak üzere her veri alt kümesini ggplot'a sırayla besler. Çıkışı plist
'a kaydediyoruz, (bu örnekte) 24 parselin bir listesi.
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())
})
Şimdi bir PDF dosyasında altı grafik çizeceğiz. Aşağıda, biri her biri altı sayfalı, diğeri de dört sayfalı bir PDF dosyası olan dört ayrı PDF dosyası olan iki seçenek vardır. Ayrıca alt kısımdaki grafiklerden birine yapıştırdım. grid.arrange
, eksen başlıklarını eklemek için left
ve bottom
argümanlarını kullanmak da dahil olmak üzere, paftaları düzenlemek için kullanıyoruz.
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()
Hi @ eipi10! Bu harika çalıştı ve anlaşılması kolay oldu! Her ne kadar bir sorunum olsa da. Kodun bireylerimden birini sevmediği ve bu hatayı alıyorum gibi görünüyor. Bu tekil '= listeye girdikten sonra yazdırmayı durdurur (gList'teki grobs Hatası (705-70773 = liste (grobs = liste) (liste (x = 0,5, y = 0).5,: sadece "gList" içinde "grobs" izni verilir Herhangi bir yardım harika olurdu! – LearningTheMacros
O kişinin veri üretilememesiyle sonuçlanan veriler hakkında bir şeyler var mı? Arsa yoksa, arsa kodunun çıktısı bir grob (grafik nesnesi) olmayacaktır. Örneğin, bu kişi için eksik olan tüm veriler veya böyle bir şey var mı? Çizginizi oluşturmayı deneyin, ancak bir veri çerçevesini ggplot ile yalnızca bir kişinin verileriyle besleyin ve ne olduğunu görün. Bu birey için verilere bakın ve bu konuda açıkça farklı bir şey olup olmadığını görün. – eipi10
Eser, HubertL'nin önerisini kullandığımda yapıldı, bu yüzden bilmiyorum. Her iki durumda da cevabınızı anladım ve gelecekte bana yardımcı olacak. Tekrar teşekkürler! – LearningTheMacros