यहाँ प्रसाद के ggplot उदाहरण के लिए इसी भूखंडों (1) किया जाली में xyplot
का उपयोग कर रहे हैं। (2) इसके बाद हम दिखाते हैं कि चिड़ियाघर पैकेज से xyplot.zoo
का उपयोग करके इसे कैसे करें और फिर (3) हम दिखाते हैं कि plot.zoo
का उपयोग करके प्रत्येक को फिर से कैसे करना है जो चिड़ियाघर पैकेज की क्लासिक ग्राफिक्स सुविधाओं का उपयोग करता है।
इन मामलों में से प्रत्येक में हम एक चौथी शैली भी दिखाते हैं जो xblocks
पर आधारित है।
सबसे पहले प्रसाद के सेटअप को दोहराने कर सकते हैं:
और अब का उपयोग कर इस दोहराने कर सकते हैं:
dts <- as.Date("20050101", '%Y%m%d') + seq(0,1000,15)
A <- data.frame(Dates = dts, Gas = 4000 + cumsum(abs(rnorm(length(dts), 100, 30))))
A <- transform(A,
Year = format(Dates, '%Y'),
DayOfYear = as.numeric(format(Dates, '%j')),
GasDiff = c(diff(Gas),NA))
अब जाली का उपयोग कर
library(lattice) # xyplot
library(latticeExtra) # layer_, panel.xblocks
library(gridExtra) # grid.arrange
library(RColorBrewer) # brewer.pal
png("png1.png")
p1 <- xyplot(GasDiff ~ Dates, group = Year, A, type = "l",
par.settings = list(superpose.line = list(col = 1:nlevels(A$Year))),
auto.key = list(lines = TRUE, points = FALSE))
p2 <- xyplot(GasDiff ~ DayOfYear | Year, A, type = "l", layout = c(1, 3))
p3 <- xyplot(GasDiff ~ DayOfYear, A, group = Year, type = "l",
auto.key = list(lines = TRUE, points = FALSE))
# and here is another style:
myPalette <- brewer.pal(nlevels(A$Year), "Set3")
p4 <- xyplot(GasDiff ~ Dates, A, type = "l", col = 1) +
layer_(panel.xblocks(A$Dates, myPalette[A$Year]))
grid.arrange(nrow = 2, p1, p2, p3, p4)
dev.off()
यह इन 4 भूखंडों देता है की कोशिश की सुविधा देता है जाली और दूसरे पी के साथ संयोजन में चिड़ियाघर का उपयोग कर ackages:
:
तरीकों में से एक तिहाई सेट चिड़ियाघर के साथ क्लासिक ग्राफिक्स जहां हम एक ही z
, zz
और pal
ऊपर गणना का उपयोग का उपयोग करने के लिए है:
png("png2.png")
library(zoo)
library(lattice)
library(latticeExtra) # layer_, panel.xblocks
library(gridExtra) # grid.arrange
library(RColorBrewer) # brewer.pal
z <- with(A, zoo(GasDiff, Dates))
year <- format(time(z), "%Y")
# split years into separate columns and plot
P1 <- xyplot(do.call("merge", split(z, year)), screen = 1, col = 1:3)
# split years into separate columns and use day.of.year as time
day.of.year <- function(x) as.numeric(format(x, "%j"))
zz <- read.zoo(A[c(1, 5, 3)], FUN = day.of.year, split = 3)
colnames(zz) <- unique(year)
P2 <- xyplot(na.approx(zz, na.rm = FALSE))
P3 <- xyplot(na.approx(zz, na.rm = FALSE), screen = 1, col = 1:3, auto.key = TRUE)
pal <- brewer.pal(nlevels(factor(year)), "Set3")
P4 <- xyplot(z, screen = 1) + layer_(panel.xblocks(time(z), pal[factor(year)]))
grid.arrange(nrow = 2, P1, P2, P3, P4)
dev.off()
यहाँ उत्पादन होता है
library(zoo)
library(RColorBrewer) # brewer.pal
png("png3a.png")
plot(do.call("merge", split(z, year)), screen = 1, col = 1:3)
dev.off()
png("png3b.png")
plot(na.approx(zz, na.rm = FALSE))
dev.off()
png("png3c.png")
plot(na.approx(zz, na.rm = FALSE), screen = 1, col = 1:3)
legend("topleft", colnames(zz), lty = 1, col = 1:3, bty = "n")
dev.off()
png("png3d.png")
plot(z, type = "n")
xblocks(time(z), pal[factor(year)])
lines(z)
dev.off()
और यहां आउटपुट
है
कोशिश ggsave(), ggsave ("/ tmp/image.png", के रूप में चौड़ाई = 5, ऊंचाई = 4, डीपीआई = 72) - मैं पीडीएफ, कनवर्टिंग, अपलोडिंग इत्यादि के रूप में सहेजने के बजाय अपने मैक पर हर समय इसका उपयोग करता हूं। –
@ जेफरी आह हां बिल्कुल, ऐसा करने का तरीका है, इसे इंगित करने के लिए धन्यवाद! –
@ प्रसाद - यह तेज़ और बहुत उपयोगी था, जो मुझे बाद में दे रहा था। – jgc