R несколько сюжетов временного ряда xts только с 1 легендой - PullRequest
0 голосов
/ 10 июня 2018

Я хочу создать несколько графиков объекта XTS временного ряда в разных окнах.Проблема в том, что я не могу добавить только одну легенду (для последнего сюжета).Мой код следующий:

dev.new(width=3,height=9)
par(mfrow=c(3,1))
plot(csum_GVMP[,c(-2,-3)],main=" ",minor.ticks="years",cex.axis = 1,major.ticks="years",grid.ticks.on=FALSE,grid.ticks.lty=0,col=color)
addLegend("bottomleft",legend.names = c("","","","","","",""))
plot(csum_ERC[,c(-2,-3)],main=" ",minor.ticks="years",cex.axis = 1,major.ticks="years",grid.ticks.on=FALSE,grid.ticks.lty=0,col=color)
addLegend("bottomleft",legend.names = c("","","","","","",""))
plot(csum_MD[,c(-2,-3)],main=" ",minor.ticks="years",cex.axis = 1,major.ticks="years",grid.ticks.on=FALSE,grid.ticks.lty=0,col=color)

Как вы видите, я добавил пустые значения для имен легенды для 1-го и 2-го графика, но в результате получается, что графики одного и того же графика повторяются два разавот так: здесь показан только график для csum_GVMP enter image description here В противном случае, если я опущу addLegend, график будет выглядеть вот так: enter image description here

, которыйэто то, что я хочу, но теперь я хотел бы добавить только одну легенду.Если я пропущу команду addLegend для 1-го и 2-го сюжета, цифры даже не будут нанесены.Кто-нибудь знает, как справиться с этим?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Я не особенно доволен этим решением, но оно решает насущную проблему.

Стратегия состоит в том, чтобы "построить" график до его завершения перед его печатью / печатью.Смотри ниже.

set.seed(10)
library(MASS)
library(xts)

date <- seq(as.Date("2000-01-01"), as.Date("2000-01-10"), "days")
matrixA <- matrix(mvrnorm(n = 30, 0.5, 0.2, empirical = TRUE), 10, 3)
matrixA.ts <- xts(matrixA, date)

matrixB <- matrix(mvrnorm(n = 30, 0.5, 0.2, empirical = TRUE), 10, 3)
matrixB.ts <- xts(matrixB, date)

# Create the first plot, but do not draw it
# Assign the result to 'p1'
p1 <- plot(matrixA.ts, main = "A")
p1 <- addLegend("bottomleft", legend.names = c("A","B"))

# Create the second plot without drawing it
# Assign the result to 'p2'
p2 <- plot(matrixB.ts, main = "B")
p2 <- addLegend("bottomleft", legend.names = c("",""))

# Set up the device layout, and draw both plots
par(mfrow=c(2,1))
p1
p2
0 голосов
/ 10 июня 2018

вот, пожалуйста.Если вы раскомментируете addLegend, он будет дублировать графики, как я упоминал в посте.Я надеюсь, что это поможет

set.seed(10)
library(MASS)
library(xts)

date=seq(as.Date("2000/1/1"), as.Date("2000/1/10"), "days")
matrixA=as.numeric(mvrnorm(n = 30, 0.5, 0.2, tol = 1e-6, empirical = TRUE, EISPACK = FALSE))
matrixA=matrix(matrixA,10,3)
martixA.ts=as.xts(matrixA,date)

matrixB=as.numeric(mvrnorm(n = 30, 0.5, 0.2, tol = 1e-6, empirical = TRUE, EISPACK = FALSE))
matrixB=matrix(matrixB,10,3)
martixB.ts=as.xts(matrixB,date)

par(mfrow=c(2,1))
plot(as.xts(matrixA,date),main="A")
#addLegend("bottomleft",legend.names = c("A","B"))
plot(as.xts(matrixB,date),main="B")
#addLegend("bottomleft",legend.names = c("",""))

Вы должны увидеть это

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...