Msg de Erro em Grafico - In axis(1, x, ...) : "frame.plot" não é um parâmetro gráfico

Ola galera. Eu estou com uma duvida que me atormenta aqui. Vejam os seguintes graficos: #CMR demo1 <- read.csv("http://www.ats.ucla.edu/stat/data/demo1.csv") demo1 <- within(demo1, { group <- factor(group) time <- factor(time) id <- factor(id) }) par(mfrow=c(1,2)) par(cex = .6) #grafico with(demo1, interaction.plot(time, group, pulse, ylim = c(5, 20), lty= c(1, 12), lwd = 3, ylab = "mean of pulse", xlab = "time", trace.label = "group",frame.plot=F)) axis(1,at=1:3) title("1") with(demo1, interaction.plot(time, group, pulse, ylim = c(5, 20), lty= c(1, 12), lwd = 3, ylab = "mean of pulse", xlab = "time", trace.label = "group")) title("2") Minha duvida é o seguinte. No grafico 1 eu uso o argumento frame.plot=F, no segundo nao uso nada. Ai no primeiro ele nao desenha o quadrado em volta do grafico, o argumento funciona, mas vem uma msg de erro, "Esse não é um parametro grafico". O grafico é pra ficar assim mesmo, mas eu nao entendo pq ele aceita o argumento e fala que não existe. Alguém saberia dizer o que acontece numa linguagem simples? Que eu ja caçei entender isso e não consegui. Obrigado -- Grato Augusto C. A. Ribas Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056

O que está acontecendo envolve um debug(interaction.plot). Em um pedaço do código interno da função existe esse trecho: matplot(xvals, cells, ..., type = type, xlim = xlim, ylim = ylim, xlab = xlab, ylab = ylab, axes = axes, xaxt = "n", col = col, lty = lty, pch = pch) if (axes && xaxt != "n") { axisInt <- function(x, main, sub, lwd, bg, log, asp, ...) axis(1, x, ...) Repare que o interection.plot() é criado internamente por um matplot() e os eixos são formados a partir de uma função interna axisInt() definida ali. Repare que tanto o matplot() quanto esse função axisInt() (e por consequência axis() também) possuem o argumento "..." que, de acordo com ?interaction.plot serve para ajustar parâmetros gráficos. O detalhe é que quando você especifica frame.plot = FALSE na chamada do interaction.plot(), esse argumento é passado tanto para matplot(), quanto para axisInt() --- por causa do "...". E frame.plot é um argumento válido para matplot(), mas não para axis() (que é o que a mensagem de erro está dizendo). Por isso o gráfico fica do jeito que vc quer, mas gera um warning porque o frame.plot está sendo usado (também) no lugar errado (axis()). Para resolver isso sem aparecer novamente esse warning, use o argumento axes = FALSE no lugar de frame.plot = FALSE. Veja que no matplot() existe uma chamada explicita para esse argumento (axes = axes). Portanto ele vai ser usado no lugar correto, e não vai mais passar para axis() (via axisInt()) depois, evitando o warning. []s, --- Fernando Mayer Universidade Federal de Santa Catarina - UFSC Departamento de Ecologia e Zoologia - ECZ/CCB URL: http://sites.google.com/site/fernandomayer e-mail: fernandomayer [@] gmail.com 2012/3/22 Augusto Ribas <ribas.aca@gmail.com>:
Ola galera. Eu estou com uma duvida que me atormenta aqui. Vejam os seguintes graficos:
#CMR demo1 <- read.csv("http://www.ats.ucla.edu/stat/data/demo1.csv") demo1 <- within(demo1, { group <- factor(group) time <- factor(time) id <- factor(id) })
par(mfrow=c(1,2)) par(cex = .6)
#grafico with(demo1, interaction.plot(time, group, pulse, ylim = c(5, 20), lty= c(1, 12), lwd = 3, ylab = "mean of pulse", xlab = "time", trace.label = "group",frame.plot=F)) axis(1,at=1:3) title("1")
with(demo1, interaction.plot(time, group, pulse, ylim = c(5, 20), lty= c(1, 12), lwd = 3, ylab = "mean of pulse", xlab = "time", trace.label = "group")) title("2")
Minha duvida é o seguinte. No grafico 1 eu uso o argumento frame.plot=F, no segundo nao uso nada. Ai no primeiro ele nao desenha o quadrado em volta do grafico, o argumento funciona, mas vem uma msg de erro, "Esse não é um parametro grafico". O grafico é pra ficar assim mesmo, mas eu nao entendo pq ele aceita o argumento e fala que não existe. Alguém saberia dizer o que acontece numa linguagem simples? Que eu ja caçei entender isso e não consegui. Obrigado
-- Grato Augusto C. A. Ribas
Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Nossa muito obrigado, iluminou meu dia. Em 22 de março de 2012 17:28, Fernando Mayer <fernandomayer@gmail.com>escreveu:
O que está acontecendo envolve um debug(interaction.plot). Em um pedaço do código interno da função existe esse trecho:
matplot(xvals, cells, ..., type = type, xlim = xlim, ylim = ylim, xlab = xlab, ylab = ylab, axes = axes, xaxt = "n", col = col, lty = lty, pch = pch) if (axes && xaxt != "n") { axisInt <- function(x, main, sub, lwd, bg, log, asp, ...) axis(1, x, ...)
Repare que o interection.plot() é criado internamente por um matplot() e os eixos são formados a partir de uma função interna axisInt() definida ali. Repare que tanto o matplot() quanto esse função axisInt() (e por consequência axis() também) possuem o argumento "..." que, de acordo com ?interaction.plot serve para ajustar parâmetros gráficos.
O detalhe é que quando você especifica frame.plot = FALSE na chamada do interaction.plot(), esse argumento é passado tanto para matplot(), quanto para axisInt() --- por causa do "...". E frame.plot é um argumento válido para matplot(), mas não para axis() (que é o que a mensagem de erro está dizendo). Por isso o gráfico fica do jeito que vc quer, mas gera um warning porque o frame.plot está sendo usado (também) no lugar errado (axis()).
Para resolver isso sem aparecer novamente esse warning, use o argumento axes = FALSE no lugar de frame.plot = FALSE. Veja que no matplot() existe uma chamada explicita para esse argumento (axes = axes). Portanto ele vai ser usado no lugar correto, e não vai mais passar para axis() (via axisInt()) depois, evitando o warning.
[]s,
--- Fernando Mayer Universidade Federal de Santa Catarina - UFSC Departamento de Ecologia e Zoologia - ECZ/CCB URL: http://sites.google.com/site/fernandomayer e-mail: fernandomayer [@] gmail.com
2012/3/22 Augusto Ribas <ribas.aca@gmail.com>:
Ola galera. Eu estou com uma duvida que me atormenta aqui. Vejam os seguintes graficos:
#CMR demo1 <- read.csv("http://www.ats.ucla.edu/stat/data/demo1.csv") demo1 <- within(demo1, { group <- factor(group) time <- factor(time) id <- factor(id) })
par(mfrow=c(1,2)) par(cex = .6)
#grafico with(demo1, interaction.plot(time, group, pulse, ylim = c(5, 20), lty= c(1, 12), lwd = 3, ylab = "mean of pulse", xlab = "time", trace.label = "group",frame.plot=F)) axis(1,at=1:3) title("1")
with(demo1, interaction.plot(time, group, pulse, ylim = c(5, 20), lty= c(1, 12), lwd = 3, ylab = "mean of pulse", xlab = "time", trace.label = "group")) title("2")
Minha duvida é o seguinte. No grafico 1 eu uso o argumento frame.plot=F, no segundo nao uso nada. Ai no primeiro ele nao desenha o quadrado em volta do grafico, o argumento funciona, mas vem uma msg de erro, "Esse não é um parametro grafico". O grafico é pra ficar assim mesmo, mas eu nao entendo pq ele aceita o argumento e fala que não existe. Alguém saberia dizer o que acontece numa linguagem simples? Que eu ja caçei entender isso e não consegui. Obrigado
-- Grato Augusto C. A. Ribas
Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Grato Augusto C. A. Ribas Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056
participantes (2)
-
Augusto Ribas
-
Fernando Mayer