Plotar duas escalas no eixo x

Caros companheiros da lista, Tenho de fazer alguns gráficos de barra na posição horizontal, onde no eixo y serão as classes e no eixo x os valores, porém o eixo x tem duas escalas diferentes, por exempo: -10 a 0 e 100000 a 200000. Ou seja, o eixo x deve ter duas escalas diferentes. Fiz uma busca pela internet em português e em inglês, mas não obtive sucesso em encontrar um material que me ajude a iniciar a programação. Gostaria de saber se alguém teria alguma sugestão, alguma ideia ou material para eu começar a estudar sobre como fazer esses gráficos? Desde já agradeço a atenção. -- *Rodrigo A. Muniz* Eng. Agrônomo. Ms Produção Vegetal (UENF) Doutor em Ciências (ESALQ/USP) E-mail - muniz.ra@usp.br Cel (19) 98300-4333 (Pessoal)

Experimenta: http://www.carlislerainey.com/2012/12/28/how-to-add-an-extra-vertical-axis-t... Atenciosamente, Leonardo Ferreira Fontenelle[1] Em Seg 6 abr. 2015, às 18:02, Rodrigo Muniz escreveu:
Caros companheiros da lista, Tenho de fazer alguns gráficos de barra na posição horizontal, onde no eixo y serão as classes e no eixo x os valores, porém o eixo x tem duas escalas diferentes, por exempo: -10 a 0 e 100000 a 200000. Ou seja, o eixo x deve ter duas escalas diferentes. Fiz uma busca pela internet em português e em inglês, mas não obtive sucesso em encontrar um material que me ajude a iniciar a programação. Gostaria de saber se alguém teria alguma sugestão, alguma ideia ou material para eu começar a estudar sobre como fazer esses gráficos? Desde já agradeço a atenção.
-- *Rodrigo A. Muniz* Eng. Agrônomo. Ms Produção Vegetal (UENF) Doutor em Ciências (ESALQ/USP) E-mail - muniz.ra@usp.br Cel (19) 98300-4333 (Pessoal)
_________________________________________________ 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.
Links: 1. http://lattes.cnpq.br/9234772336296638

Rodrigo, bom dia! Sem entrar no mérito da comparação, o que poderia ser feito é padronizar os valores, p. ex., entre 0 e 1, plotá-los e atribuir manualmente os valores do eixo x. ### <code r> set.seed(765) a <- runif(10, -10, 0) b <- runif(10, 100000, 200000) scalex <- function(x) scale(x-min(x), center=FALSE, scale=max(x)-min(x)) a1 <- t(scalex(a)) b1 <- t(scalex(b)) barplot(rbind(a1, b1), col=c(2,3), horiz=T, beside=T, xlim=c(0,1), names.arg=LETTERS[1:10], axes=F) axis(1, seq(0,1,len=2), c(-10,0)) axis(3, seq(0,1,len=2), c("100.000", "200.000")) ### </code> Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W] Em 6 de abril de 2015 17:28, Leonardo Ferreira Fontenelle < leonardof@leonardof.med.br> escreveu:
Experimenta: http://www.carlislerainey.com/2012/12/28/how-to-add-an-extra-vertical-axis-t...
<http://www.carlislerainey.com/2012/12/28/how-to-add-an-extra-vertical-axis-to-r-plots/> Atenciosamente,
Leonardo Ferreira Fontenelle <http://lattes.cnpq.br/9234772336296638>
Em Seg 6 abr. 2015, às 18:02, Rodrigo Muniz escreveu:
Caros companheiros da lista, Tenho de fazer alguns gráficos de barra na posição horizontal, onde no eixo y serão as classes e no eixo x os valores, porém o eixo x tem duas escalas diferentes, por exempo: -10 a 0 e 100000 a 200000. Ou seja, o eixo x deve ter duas escalas diferentes. Fiz uma busca pela internet em português e em inglês, mas não obtive sucesso em encontrar um material que me ajude a iniciar a programação. Gostaria de saber se alguém teria alguma sugestão, alguma ideia ou material para eu começar a estudar sobre como fazer esses gráficos? Desde já agradeço a atenção.
-- *Rodrigo A. Muniz* Eng. Agrônomo. Ms Produção Vegetal (UENF) Doutor em Ciências (ESALQ/USP) E-mail - muniz.ra@usp.br Cel (19) 98300-4333 (Pessoal)
*_______________________________________________* 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.

Olá, novamente! Mudei o código anterior, porque tinha um problema conceitual acerca do máximo e mínimos considerados. ### <code r> aRange <- c(-10,0) bRange <- c(100000,200000) set.seed(765) a <- runif(5, -10, -1) b <- runif(5, 110000, 200000) a1 <- t(scale(a-aRange[1], center=F, scale=diff(aRange))) b1 <- t(scale(b-bRange[1], center=F, scale=diff(bRange))) plot1 <- barplot(rbind(a1, b1), col=c(2,3), horiz=T, beside=T, xlim=c(0,1), names.arg=LETTERS[1:5], axes=F) axis(1, cex.axis=.75, seq(0,1,len=2), c(-10,0)) axis(3, cex.axis=.75, seq(0,1,len=2), c("100.000", "200.000")) abline(v=c(.25,.5,.75), lty=2) text(x=a1-.025, y=plot1[1,], labels=round(a,2), cex=.6, col=1, xpd=TRUE) text(x=b1-.025, y=plot1[2,], labels=round(b), cex=.6, col=1, xpd=TRUE) ### </code> [image: Imagem inline 1]

Olá Eder, tentei uma estratégia semelhante a sua, um pouco menos elegante, porém a maior dificuldade é que o zero teria de ficar no meio do gráfico e, para direita teria uma escala que varia de 0 a 0.6, para esquerda de 0 a 5. No seu exemplo a origem é na esquerda, desta forma todas as barras partem do mesmo ponto, o que não é desejado. Segue um exemplo do gráfico que eu gostaria de programar. Não consegui programar o gráfico como eu gostaria, então como uma solução bastante grosseira e imediata eu "desenhei" o gráfico, como se segue: Porém continua a dificuldade em faze-lo de uma outra forma. #******Criando o rótulo do eixo x eixox=c("5","4","3","2","1","0", "0.1", "0.2","0.3","0.4","0.5","0.6") #********Criando a sequensia compativel com o rótulo de x eixoy=seq(1:12) #*********Criando o dataframe eixos=data.frame(eixox, eixoy) #*********Configurando parametros gráficos, o mgp é o parâmetro mais importante, pois define #********as ditâncias dos ticks em relação ao gráfico par(mar = c(0.5, 10, 0, 0.3), mgp = c(0.5, -0.25, 0), bg="gray94", bty="n", cex.axis=0.9, mar = c(4,8, 4, 4), ps=15) #***********Criando o gráfico de barras em branco com os rótulos de x desejado, #a escala de x é a relação entre número de rótulos dividido por 10 barplot(with(eixos,(tapply(eixoy,eixox,mean))),axes=FALSE, names.arg=as.factor(c("5","4","3","2","1","0", "0.1", "0.2","0.3","0.4","0.5","0.6")), col="white", border="white", ylab="1985-1991 1991-1999", xlab="Interval change Area (percent of map) Anual change Area (percent of map)") #*****Colocando as barras verticais sobre os rótulos de x, a sequência é determinada pelo #número de rótulos dividido por 10 abline(v=c(0.7,1.9,3.1,4.3,5.5,6.7,7.9,9.1,10.3,11.5,12.7,13.9), lwd=0.9, col="gray70") #****Criando as barras horizontais rect(2.5,1, 13.5,4, col="gray", border=FALSE) rect(1.3,7, 13,10, col="gray", border=FALSE) #****Criando as linhas verticais abline(v=6.7, lwd=2) abline(v=13.1, lwd=1, col="red", lty=2) #******Criando as setas arrows(13.2, 10.5,15, 10.5, cex=0.5, col="red", length=0.1) arrows(13, 10.5,11.6, 10.5, cex=0.5, col="red", length=0.1) #Definido o local do texto. Obs: os comando devem ser executados um de cada vez. text(locator(1), "Slow Fast") text(locator(1), "0.54 = Uniform Intensity") [image: Inline image 1] On Tue, Apr 7, 2015 at 4:09 PM, Éder Comunello <comunello.eder@gmail.com> wrote:
Olá, novamente!
Mudei o código anterior, porque tinha um problema conceitual acerca do máximo e mínimos considerados.
### <code r> aRange <- c(-10,0) bRange <- c(100000,200000)
set.seed(765) a <- runif(5, -10, -1) b <- runif(5, 110000, 200000)
a1 <- t(scale(a-aRange[1], center=F, scale=diff(aRange))) b1 <- t(scale(b-bRange[1], center=F, scale=diff(bRange)))
plot1 <- barplot(rbind(a1, b1), col=c(2,3), horiz=T, beside=T, xlim=c(0,1), names.arg=LETTERS[1:5], axes=F) axis(1, cex.axis=.75, seq(0,1,len=2), c(-10,0)) axis(3, cex.axis=.75, seq(0,1,len=2), c("100.000", "200.000")) abline(v=c(.25,.5,.75), lty=2) text(x=a1-.025, y=plot1[1,], labels=round(a,2), cex=.6, col=1, xpd=TRUE) text(x=b1-.025, y=plot1[2,], labels=round(b), cex=.6, col=1, xpd=TRUE) ### </code>
[image: Imagem inline 1]
_______________________________________________ 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.
-- *Rodrigo A. Muniz* Eng. Agrônomo. Ms Produção Vegetal (UENF) Doutor em Ciências (ESALQ/USP) E-mail - muniz.ra@usp.br Cel (19) 98300-4333 (Pessoal)
participantes (3)
-
Leonardo Ferreira Fontenelle
-
Rodrigo Muniz
-
Éder Comunello