Ogbos Okike
2019-Nov-27 02:53 UTC
[R] Stacking two graphs with different x and y scale on the same graph
Dear Contributors, I have two data. A is of the form: 05 01 01 -0.00376058013285748 05 01 02 -0.0765481943910918 05 01 03 -1.28158758599964 05 01 04 -1.51612545416506 05 01 05 -1.39481276373467 05 01 06 -1.17644992095997 05 01 07 -0.788249311582716 05 01 08 -0.925737027403825 05 01 09 -1.02278717974814 05 01 10 -0.982349616271341 05 01 11 -0.61032403228481 05 01 12 -0.197860884821482 05 01 13 -0.173598346735404 05 01 14 -0.270648499079717 05 01 15 -0.173598346735404 05 01 16 -0.343436113337951 05 01 17 -0.949999565489903 05 01 18 -3.60270372956778 05 01 19 -5.47091916219579 05 01 20 -4.67834291805057 05 01 21 -5.42239408602363 05 01 22 -4.19309215632901 05 01 23 -1.79918839850264 05 01 24 -1.04704971783422 05 01 25 -0.642674083066247 05 01 26 -0.505186367245138 05 01 27 -0.472836316463701 05 01 28 -0.537536418026576 05 01 29 -0.311086062556513 05 01 30 -0.00376058013285748 05 01 31 -0.254473473688998 05 02 01 -0.197860884821482 05 02 02 -0.23021093560292 05 02 03 -0.238298448298279 05 02 04 -0.157423321344685 05 02 05 -0.060373169000373 05 02 06 0.109464597602174 05 02 07 0.02858947064858 05 02 08 -0.0846357070864511 05 02 09 -0.189773372126123 05 02 10 -0.278736011775076 05 02 11 -0.302998549861154 05 02 12 -0.0684606816957324 05 02 13 0.0852020595160955 05 02 14 0.133727135688252 05 02 15 0.0528520087346581 05 02 16 0.0771145468207362 05 02 17 -0.0361106309142949 05 02 18 -0.205948397516842 05 02 19 -0.383873676814748 05 02 20 -0.383873676814748 05 02 21 -0.294911037165795 05 02 22 -0.197860884821482 05 02 23 -0.214035910212201 05 02 24 -0.165510834040045 05 02 25 -0.0522856563050137 05 02 26 0.0366769833439393 05 02 27 0.141814648383611 05 02 28 0.101377084906814 05 03 01 0.15798967377433 05 03 02 0.222689775337205 05 03 03 0.27930236420472 05 03 04 0.327827440376876 05 03 05 0.214602262641845 05 03 06 0.133727135688252 05 03 07 0.166077186469689 and B is of the form: 05 01 03 1.0401704890785 05 01 04 1.1881431442713 05 01 05 0.899433543239033 05 01 06 0.495029973508058 05 01 18 2.51141960034673 05 01 19 4.80818567931821 05 01 20 3.82649399122216 05 01 21 4.75619054623929 05 01 22 3.25702525028531 05 01 23 0.328654748869008 05 02 10 0.0689360507407491 05 02 11 0.192369729879942 05 02 15 0.0684297713902015 05 02 16 0.100584435166215 05 02 17 0.295302934161718 05 02 18 0.552388788420635 05 02 19 0.811732847306371 05 02 20 0.843313045760178 05 02 21 0.757193220375875 05 02 22 0.65352100387166 05 02 23 0.68252482652902 05 02 24 0.624510062816789 05 02 25 0.479854370620533 05 02 26 0.359002279153697 05 02 27 0.212459089641907 05 02 28 0.240784160160447 05 03 01 0.144583652487177 05 03 02 0.0345028244394553 05 03 21 0.023582430982633 05 03 22 0.000293765928922767 05 03 27 0.0440288222469235 05 03 28 0.106263428254761 05 03 29 0.291212461872628 05 03 30 0.198305017329253 05 03 31 0.186935599530143 05 04 01 0.316471519561273 05 04 02 0.266260602009615 05 04 03 0.0456391152384458 05 04 04 0.113939833419049 05 04 05 0.140500137811164 05 04 06 0.374670064516577 05 04 07 0.295820206701906 05 04 08 0.0833493810907385 05 04 10 0.0253248646840757 05 04 11 0.188773903020133 05 04 12 0.206619775067284 05 04 13 0.408503282817833 05 04 14 0.344129922512134 05 04 15 0.283273728250647 05 04 16 0.155780334719261 05 04 17 0.0815692243668445 B is extracted from A and I wish to plot A and B on the same x-axis but different y axis on the same graph. Stacking very close helps to illustrates the common rapid variations in A, represented in B. One of the codes I tried without success is: data <- read.table("A", col.names = c("year", "month", "day", "counts")) new.century <- data$year < 50 data$year <- ifelse(new.century, data$year + 2000, data$year + 1900) data$date <- as.Date(ISOdate(data$year, data$month, data$day)) x1 = data$date y1=data$counts #y1=scale(data$counts) data <- read.table("B", col.names = c("year", "month", "day", "counts")) new.century <- data$year < 50 data$year <- ifelse(new.century, data$year + 2000, data$year + 1900) data$date <- as.Date(ISOdate(data$year, data$month, data$day)) x2 = data$date y2=data$counts pdf("PLOT.pdf") par(mar=c(5,5,5,5)) plot(x1,y1,pch=0,type="b",col="red",yaxt="n",ylim=c(-5.470919,1.298329),ylab="") axis(side=2, at=c(-6,0,2)) mtext("red line", side = 2, line=2.5, at=0) par(new=TRUE) plot(x2,y2,pch=1,type="b",col="blue",yaxt="n",ylim=c(-4.808186,0.0), ylab="") axis(side=4, at=c(-5,-1,0), labels=c("98%","100%","102%")) mtext("blue line", side=4, line=2.5, at=100) dev.off() Your assistance is ever appreciated. Best wishes Ogbos
Rui Barradas
2019-Nov-27 06:58 UTC
[R] Stacking two graphs with different x and y scale on the same graph
Hello, The following is not a complete solution, the axis ranges are wrong, but it gets you closer, I think. op <- par(mar = c(5, 5, 5, 5)) plot(c(x1, x2), c(y1, y2), type = "n",xaxt="n", yaxt="n", ylim = range(c(y1, y2))) par(new=TRUE) plot(x1,y1,pch=0,type="b",col="red",yaxt="n", xlab = "", ylab="") axis(side=2, at=c(-5,0,2)) mtext("red line", side = 2, line=2.5, at=0) par(new=TRUE) plot(x2, y2, pch = 1,type="b",col="blue", xaxt="n", yaxt="n", xlab="", ylab="") axis(side=4, at=c(-5,-1,0), labels=c("98%","100%","102%")) mtext("blue line", side=4, line=2.5, at=0) par(op) Hope this helps, Rui Barradas ?s 02:53 de 27/11/19, Ogbos Okike escreveu:> Dear Contributors, > I have two data. A is of the form: > 05 01 01 -0.00376058013285748 > 05 01 02 -0.0765481943910918 > 05 01 03 -1.28158758599964 > 05 01 04 -1.51612545416506 > 05 01 05 -1.39481276373467 > 05 01 06 -1.17644992095997 > 05 01 07 -0.788249311582716 > 05 01 08 -0.925737027403825 > 05 01 09 -1.02278717974814 > 05 01 10 -0.982349616271341 > 05 01 11 -0.61032403228481 > 05 01 12 -0.197860884821482 > 05 01 13 -0.173598346735404 > 05 01 14 -0.270648499079717 > 05 01 15 -0.173598346735404 > 05 01 16 -0.343436113337951 > 05 01 17 -0.949999565489903 > 05 01 18 -3.60270372956778 > 05 01 19 -5.47091916219579 > 05 01 20 -4.67834291805057 > 05 01 21 -5.42239408602363 > 05 01 22 -4.19309215632901 > 05 01 23 -1.79918839850264 > 05 01 24 -1.04704971783422 > 05 01 25 -0.642674083066247 > 05 01 26 -0.505186367245138 > 05 01 27 -0.472836316463701 > 05 01 28 -0.537536418026576 > 05 01 29 -0.311086062556513 > 05 01 30 -0.00376058013285748 > 05 01 31 -0.254473473688998 > 05 02 01 -0.197860884821482 > 05 02 02 -0.23021093560292 > 05 02 03 -0.238298448298279 > 05 02 04 -0.157423321344685 > 05 02 05 -0.060373169000373 > 05 02 06 0.109464597602174 > 05 02 07 0.02858947064858 > 05 02 08 -0.0846357070864511 > 05 02 09 -0.189773372126123 > 05 02 10 -0.278736011775076 > 05 02 11 -0.302998549861154 > 05 02 12 -0.0684606816957324 > 05 02 13 0.0852020595160955 > 05 02 14 0.133727135688252 > 05 02 15 0.0528520087346581 > 05 02 16 0.0771145468207362 > 05 02 17 -0.0361106309142949 > 05 02 18 -0.205948397516842 > 05 02 19 -0.383873676814748 > 05 02 20 -0.383873676814748 > 05 02 21 -0.294911037165795 > 05 02 22 -0.197860884821482 > 05 02 23 -0.214035910212201 > 05 02 24 -0.165510834040045 > 05 02 25 -0.0522856563050137 > 05 02 26 0.0366769833439393 > 05 02 27 0.141814648383611 > 05 02 28 0.101377084906814 > 05 03 01 0.15798967377433 > 05 03 02 0.222689775337205 > 05 03 03 0.27930236420472 > 05 03 04 0.327827440376876 > 05 03 05 0.214602262641845 > 05 03 06 0.133727135688252 > 05 03 07 0.166077186469689 > and B is of the form: > 05 01 03 1.0401704890785 > 05 01 04 1.1881431442713 > 05 01 05 0.899433543239033 > 05 01 06 0.495029973508058 > 05 01 18 2.51141960034673 > 05 01 19 4.80818567931821 > 05 01 20 3.82649399122216 > 05 01 21 4.75619054623929 > 05 01 22 3.25702525028531 > 05 01 23 0.328654748869008 > 05 02 10 0.0689360507407491 > 05 02 11 0.192369729879942 > 05 02 15 0.0684297713902015 > 05 02 16 0.100584435166215 > 05 02 17 0.295302934161718 > 05 02 18 0.552388788420635 > 05 02 19 0.811732847306371 > 05 02 20 0.843313045760178 > 05 02 21 0.757193220375875 > 05 02 22 0.65352100387166 > 05 02 23 0.68252482652902 > 05 02 24 0.624510062816789 > 05 02 25 0.479854370620533 > 05 02 26 0.359002279153697 > 05 02 27 0.212459089641907 > 05 02 28 0.240784160160447 > 05 03 01 0.144583652487177 > 05 03 02 0.0345028244394553 > 05 03 21 0.023582430982633 > 05 03 22 0.000293765928922767 > 05 03 27 0.0440288222469235 > 05 03 28 0.106263428254761 > 05 03 29 0.291212461872628 > 05 03 30 0.198305017329253 > 05 03 31 0.186935599530143 > 05 04 01 0.316471519561273 > 05 04 02 0.266260602009615 > 05 04 03 0.0456391152384458 > 05 04 04 0.113939833419049 > 05 04 05 0.140500137811164 > 05 04 06 0.374670064516577 > 05 04 07 0.295820206701906 > 05 04 08 0.0833493810907385 > 05 04 10 0.0253248646840757 > 05 04 11 0.188773903020133 > 05 04 12 0.206619775067284 > 05 04 13 0.408503282817833 > 05 04 14 0.344129922512134 > 05 04 15 0.283273728250647 > 05 04 16 0.155780334719261 > 05 04 17 0.0815692243668445 > B is extracted from A and I wish to plot A and B on the same x-axis > but different y axis on the same graph. Stacking very close helps to > illustrates the common rapid variations in A, represented in B. > > One of the codes I tried without success is: > data <- read.table("A", col.names = c("year", "month", "day", "counts")) > > new.century <- data$year < 50 > > data$year <- ifelse(new.century, data$year + 2000, data$year + 1900) > > data$date <- as.Date(ISOdate(data$year, data$month, data$day)) > x1 = data$date > y1=data$counts > #y1=scale(data$counts) > > > data <- read.table("B", col.names = c("year", "month", "day", "counts")) > > new.century <- data$year < 50 > > data$year <- ifelse(new.century, data$year + 2000, data$year + 1900) > > data$date <- as.Date(ISOdate(data$year, data$month, data$day)) > x2 = data$date > y2=data$counts > > > pdf("PLOT.pdf") > > par(mar=c(5,5,5,5)) > > plot(x1,y1,pch=0,type="b",col="red",yaxt="n",ylim=c(-5.470919,1.298329),ylab="") > axis(side=2, at=c(-6,0,2)) > mtext("red line", side = 2, line=2.5, at=0) > > par(new=TRUE) > plot(x2,y2,pch=1,type="b",col="blue",yaxt="n",ylim=c(-4.808186,0.0), ylab="") > axis(side=4, at=c(-5,-1,0), labels=c("98%","100%","102%")) > mtext("blue line", side=4, line=2.5, at=100) > dev.off() > > Your assistance is ever appreciated. > Best wishes > Ogbos > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Ogbos Okike
2019-Nov-27 07:55 UTC
[R] Stacking two graphs with different x and y scale on the same graph
Dear Rui, Many thanks. It is indeed close to what I am looking for apart from the issues on the axes. I am attaching the result plot. The minimum and maximum values of y1 are respectively -5.470919 and 1.298329 while they are 0.0002937659 and 4.808186 for y2. New problems are: (1) I can't labelled the axis as (x1,x2) persist when I tried to label the axes. (2) The two plots are merging at some points. I only want them close but not merging as that does not allow for meaningful comparison. It would be great if you could adjust the code further to minimize these problems. Thank you. Best wishes Ogbos On Wed, Nov 27, 2019 at 7:58 AM Rui Barradas <ruipbarradas at sapo.pt> wrote:> > Hello, > > The following is not a complete solution, the axis ranges are wrong, but > it gets you closer, I think. > > > op <- par(mar = c(5, 5, 5, 5)) > > plot(c(x1, x2), c(y1, y2), type = "n",xaxt="n", yaxt="n", > ylim = range(c(y1, y2))) > > par(new=TRUE) > plot(x1,y1,pch=0,type="b",col="red",yaxt="n", > xlab = "", ylab="") > axis(side=2, at=c(-5,0,2)) > mtext("red line", side = 2, line=2.5, at=0) > > par(new=TRUE) > plot(x2, y2, pch = 1,type="b",col="blue", > xaxt="n", yaxt="n", > xlab="", ylab="") > axis(side=4, at=c(-5,-1,0), labels=c("98%","100%","102%")) > mtext("blue line", side=4, line=2.5, at=0) > > par(op) > > > > Hope this helps, > > Rui Barradas > > ?s 02:53 de 27/11/19, Ogbos Okike escreveu: > > Dear Contributors, > > I have two data. A is of the form: > > 05 01 01 -0.00376058013285748 > > 05 01 02 -0.0765481943910918 > > 05 01 03 -1.28158758599964 > > 05 01 04 -1.51612545416506 > > 05 01 05 -1.39481276373467 > > 05 01 06 -1.17644992095997 > > 05 01 07 -0.788249311582716 > > 05 01 08 -0.925737027403825 > > 05 01 09 -1.02278717974814 > > 05 01 10 -0.982349616271341 > > 05 01 11 -0.61032403228481 > > 05 01 12 -0.197860884821482 > > 05 01 13 -0.173598346735404 > > 05 01 14 -0.270648499079717 > > 05 01 15 -0.173598346735404 > > 05 01 16 -0.343436113337951 > > 05 01 17 -0.949999565489903 > > 05 01 18 -3.60270372956778 > > 05 01 19 -5.47091916219579 > > 05 01 20 -4.67834291805057 > > 05 01 21 -5.42239408602363 > > 05 01 22 -4.19309215632901 > > 05 01 23 -1.79918839850264 > > 05 01 24 -1.04704971783422 > > 05 01 25 -0.642674083066247 > > 05 01 26 -0.505186367245138 > > 05 01 27 -0.472836316463701 > > 05 01 28 -0.537536418026576 > > 05 01 29 -0.311086062556513 > > 05 01 30 -0.00376058013285748 > > 05 01 31 -0.254473473688998 > > 05 02 01 -0.197860884821482 > > 05 02 02 -0.23021093560292 > > 05 02 03 -0.238298448298279 > > 05 02 04 -0.157423321344685 > > 05 02 05 -0.060373169000373 > > 05 02 06 0.109464597602174 > > 05 02 07 0.02858947064858 > > 05 02 08 -0.0846357070864511 > > 05 02 09 -0.189773372126123 > > 05 02 10 -0.278736011775076 > > 05 02 11 -0.302998549861154 > > 05 02 12 -0.0684606816957324 > > 05 02 13 0.0852020595160955 > > 05 02 14 0.133727135688252 > > 05 02 15 0.0528520087346581 > > 05 02 16 0.0771145468207362 > > 05 02 17 -0.0361106309142949 > > 05 02 18 -0.205948397516842 > > 05 02 19 -0.383873676814748 > > 05 02 20 -0.383873676814748 > > 05 02 21 -0.294911037165795 > > 05 02 22 -0.197860884821482 > > 05 02 23 -0.214035910212201 > > 05 02 24 -0.165510834040045 > > 05 02 25 -0.0522856563050137 > > 05 02 26 0.0366769833439393 > > 05 02 27 0.141814648383611 > > 05 02 28 0.101377084906814 > > 05 03 01 0.15798967377433 > > 05 03 02 0.222689775337205 > > 05 03 03 0.27930236420472 > > 05 03 04 0.327827440376876 > > 05 03 05 0.214602262641845 > > 05 03 06 0.133727135688252 > > 05 03 07 0.166077186469689 > > and B is of the form: > > 05 01 03 1.0401704890785 > > 05 01 04 1.1881431442713 > > 05 01 05 0.899433543239033 > > 05 01 06 0.495029973508058 > > 05 01 18 2.51141960034673 > > 05 01 19 4.80818567931821 > > 05 01 20 3.82649399122216 > > 05 01 21 4.75619054623929 > > 05 01 22 3.25702525028531 > > 05 01 23 0.328654748869008 > > 05 02 10 0.0689360507407491 > > 05 02 11 0.192369729879942 > > 05 02 15 0.0684297713902015 > > 05 02 16 0.100584435166215 > > 05 02 17 0.295302934161718 > > 05 02 18 0.552388788420635 > > 05 02 19 0.811732847306371 > > 05 02 20 0.843313045760178 > > 05 02 21 0.757193220375875 > > 05 02 22 0.65352100387166 > > 05 02 23 0.68252482652902 > > 05 02 24 0.624510062816789 > > 05 02 25 0.479854370620533 > > 05 02 26 0.359002279153697 > > 05 02 27 0.212459089641907 > > 05 02 28 0.240784160160447 > > 05 03 01 0.144583652487177 > > 05 03 02 0.0345028244394553 > > 05 03 21 0.023582430982633 > > 05 03 22 0.000293765928922767 > > 05 03 27 0.0440288222469235 > > 05 03 28 0.106263428254761 > > 05 03 29 0.291212461872628 > > 05 03 30 0.198305017329253 > > 05 03 31 0.186935599530143 > > 05 04 01 0.316471519561273 > > 05 04 02 0.266260602009615 > > 05 04 03 0.0456391152384458 > > 05 04 04 0.113939833419049 > > 05 04 05 0.140500137811164 > > 05 04 06 0.374670064516577 > > 05 04 07 0.295820206701906 > > 05 04 08 0.0833493810907385 > > 05 04 10 0.0253248646840757 > > 05 04 11 0.188773903020133 > > 05 04 12 0.206619775067284 > > 05 04 13 0.408503282817833 > > 05 04 14 0.344129922512134 > > 05 04 15 0.283273728250647 > > 05 04 16 0.155780334719261 > > 05 04 17 0.0815692243668445 > > B is extracted from A and I wish to plot A and B on the same x-axis > > but different y axis on the same graph. Stacking very close helps to > > illustrates the common rapid variations in A, represented in B. > > > > One of the codes I tried without success is: > > data <- read.table("A", col.names = c("year", "month", "day", "counts")) > > > > new.century <- data$year < 50 > > > > data$year <- ifelse(new.century, data$year + 2000, data$year + 1900) > > > > data$date <- as.Date(ISOdate(data$year, data$month, data$day)) > > x1 = data$date > > y1=data$counts > > #y1=scale(data$counts) > > > > > > data <- read.table("B", col.names = c("year", "month", "day", "counts")) > > > > new.century <- data$year < 50 > > > > data$year <- ifelse(new.century, data$year + 2000, data$year + 1900) > > > > data$date <- as.Date(ISOdate(data$year, data$month, data$day)) > > x2 = data$date > > y2=data$counts > > > > > > pdf("PLOT.pdf") > > > > par(mar=c(5,5,5,5)) > > > > plot(x1,y1,pch=0,type="b",col="red",yaxt="n",ylim=c(-5.470919,1.298329),ylab="") > > axis(side=2, at=c(-6,0,2)) > > mtext("red line", side = 2, line=2.5, at=0) > > > > par(new=TRUE) > > plot(x2,y2,pch=1,type="b",col="blue",yaxt="n",ylim=c(-4.808186,0.0), ylab="") > > axis(side=4, at=c(-5,-1,0), labels=c("98%","100%","102%")) > > mtext("blue line", side=4, line=2.5, at=100) > > dev.off() > > > > Your assistance is ever appreciated. > > Best wishes > > Ogbos > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > >-------------- next part -------------- A non-text attachment was scrubbed... Name: TEST.pdf Type: application/pdf Size: 7915 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20191127/8a852f98/attachment.pdf>
PIKAL Petr
2019-Nov-27 08:10 UTC
[R] Stacking two graphs with different x and y scale on the same graph
Hi In ancient times I developped function plot.yy which requires some data twisting but should do plotting with one x axis and two y axes and should estimete ranges automatically. datA <- data.frame(datum=x1, counts=y1) datA$vzor <- "A" datB <- data.frame(datum=x2, counts=y2) datB$vzor <- "B" mydat <- merge(datA, datB, all=T, by="datum") plot.yy(mydat$datum, mydat$counts.x, mydat$counts.y, col=c("red", "blue"), linky=T) ## The function is currently defined as plot.yy <- function (x, yright, yleft, yleftlim = NULL, yrightlim = NULL, xlab = NULL, yylab = list(NA, NA), pch = c(1, 2), col = c(1,2), linky = F, smooth = 0, lwds = 1, length = 10, format = "%d/%m", rect = NULL, type = "p", ...) { par(mar = c(5, 4, 4, 2), oma = c(0, 0, 0, 3)) plot(x, yright, ylim = yrightlim, axes = F, ylab = "", xlab = xlab, pch = pch[1], col = col[1], type = type, ...) if (!is.null(rect)) rect(x[rect[1]], rect[2], x[rect[3]], rect[4], col = "grey") points(x, yright, ylim = yrightlim, ylab = "", xlab = xlab, pch = pch[1], col = col[1], ...) axis(4, pretty(range(yright, na.rm = T), 10), col = col[1]) if (linky) lines(x, yright, col = col[1], ...) if (smooth != 0) lines(supsmu(x, yright, span = smooth), col = col[1], lwd = lwds, ...) if (is.na(yylab[[1]])) mtext(deparse(substitute(yright)), side = 4, outer = T, line = 1, col = col[1], ...) else mtext(yylab[[1]], side = 4, outer = T, line = 1, col = col[1], ...) par(new = T) plot(x, yleft, ylim = yleftlim, ylab = "", axes = F, xlab = xlab, pch = pch[2], col = col[2], ...) box() axis(2, pretty(range(yleft, na.rm = T), 10), col = col[2], col.axis = col[2]) if (!inherits(x, c("Date", "POSIXt"))) axis(1, pretty(range(x, na.rm = T), 10)) else { if (inherits(x, "POSIXt")) { l <- length(x) axis(1, at = x[seq(1, l, length = length)], labels = format(as.POSIXct(x[seq(1,l, length = length)]), format = format)) } else { if (inherits(x, "Date")) { l <- length(x) axis(1, at = x[seq(1, l, length = length)], labels = format(as.Date(x[seq(1,l, length = length)]), format = format)) } else { print("Not suitable x axis") } } } if (is.na(yylab[[2]])) mtext(deparse(substitute(yleft)), side = 2, line = 2, col = col[2], ...) else mtext(yylab[[2]], side = 2, line = 2, col = col[2], ...) if (linky) lines(x, yleft, col = col[2], lty = 2, ...) if (smooth != 0) lines(supsmu(x, yleft, span = smooth), col = col[2], lty = 2, lwd = lwds, ...)> -----Original Message----- > From: R-help <r-help-bounces at r-project.org> On Behalf Of Rui Barradas > Sent: Wednesday, November 27, 2019 7:59 AM > To: Ogbos Okike <giftedlife2014 at gmail.com>; r-help <r-help at r-project.org> > Subject: Re: [R] Stacking two graphs with different x and y scale on the same > graph > > Hello, > > The following is not a complete solution, the axis ranges are wrong, but it > gets you closer, I think. > > > op <- par(mar = c(5, 5, 5, 5)) > > plot(c(x1, x2), c(y1, y2), type = "n",xaxt="n", yaxt="n", > ylim = range(c(y1, y2))) > > par(new=TRUE) > plot(x1,y1,pch=0,type="b",col="red",yaxt="n", > xlab = "", ylab="") > axis(side=2, at=c(-5,0,2)) > mtext("red line", side = 2, line=2.5, at=0) > > par(new=TRUE) > plot(x2, y2, pch = 1,type="b",col="blue", > xaxt="n", yaxt="n", > xlab="", ylab="") > axis(side=4, at=c(-5,-1,0), labels=c("98%","100%","102%")) > mtext("blue line", side=4, line=2.5, at=0) > > par(op) > > > > Hope this helps, > > Rui Barradas > > ?s 02:53 de 27/11/19, Ogbos Okike escreveu: > > Dear Contributors, > > I have two data. A is of the form: > > 05 01 01 -0.00376058013285748 > > 05 01 02 -0.0765481943910918 > > 05 01 03 -1.28158758599964 > > 05 01 04 -1.51612545416506 > > 05 01 05 -1.39481276373467 > > 05 01 06 -1.17644992095997 > > 05 01 07 -0.788249311582716 > > 05 01 08 -0.925737027403825 > > 05 01 09 -1.02278717974814 > > 05 01 10 -0.982349616271341 > > 05 01 11 -0.61032403228481 > > 05 01 12 -0.197860884821482 > > 05 01 13 -0.173598346735404 > > 05 01 14 -0.270648499079717 > > 05 01 15 -0.173598346735404 > > 05 01 16 -0.343436113337951 > > 05 01 17 -0.949999565489903 > > 05 01 18 -3.60270372956778 > > 05 01 19 -5.47091916219579 > > 05 01 20 -4.67834291805057 > > 05 01 21 -5.42239408602363 > > 05 01 22 -4.19309215632901 > > 05 01 23 -1.79918839850264 > > 05 01 24 -1.04704971783422 > > 05 01 25 -0.642674083066247 > > 05 01 26 -0.505186367245138 > > 05 01 27 -0.472836316463701 > > 05 01 28 -0.537536418026576 > > 05 01 29 -0.311086062556513 > > 05 01 30 -0.00376058013285748 > > 05 01 31 -0.254473473688998 > > 05 02 01 -0.197860884821482 > > 05 02 02 -0.23021093560292 > > 05 02 03 -0.238298448298279 > > 05 02 04 -0.157423321344685 > > 05 02 05 -0.060373169000373 > > 05 02 06 0.109464597602174 > > 05 02 07 0.02858947064858 > > 05 02 08 -0.0846357070864511 > > 05 02 09 -0.189773372126123 > > 05 02 10 -0.278736011775076 > > 05 02 11 -0.302998549861154 > > 05 02 12 -0.0684606816957324 > > 05 02 13 0.0852020595160955 > > 05 02 14 0.133727135688252 > > 05 02 15 0.0528520087346581 > > 05 02 16 0.0771145468207362 > > 05 02 17 -0.0361106309142949 > > 05 02 18 -0.205948397516842 > > 05 02 19 -0.383873676814748 > > 05 02 20 -0.383873676814748 > > 05 02 21 -0.294911037165795 > > 05 02 22 -0.197860884821482 > > 05 02 23 -0.214035910212201 > > 05 02 24 -0.165510834040045 > > 05 02 25 -0.0522856563050137 > > 05 02 26 0.0366769833439393 > > 05 02 27 0.141814648383611 > > 05 02 28 0.101377084906814 > > 05 03 01 0.15798967377433 > > 05 03 02 0.222689775337205 > > 05 03 03 0.27930236420472 > > 05 03 04 0.327827440376876 > > 05 03 05 0.214602262641845 > > 05 03 06 0.133727135688252 > > 05 03 07 0.166077186469689 > > and B is of the form: > > 05 01 03 1.0401704890785 > > 05 01 04 1.1881431442713 > > 05 01 05 0.899433543239033 > > 05 01 06 0.495029973508058 > > 05 01 18 2.51141960034673 > > 05 01 19 4.80818567931821 > > 05 01 20 3.82649399122216 > > 05 01 21 4.75619054623929 > > 05 01 22 3.25702525028531 > > 05 01 23 0.328654748869008 > > 05 02 10 0.0689360507407491 > > 05 02 11 0.192369729879942 > > 05 02 15 0.0684297713902015 > > 05 02 16 0.100584435166215 > > 05 02 17 0.295302934161718 > > 05 02 18 0.552388788420635 > > 05 02 19 0.811732847306371 > > 05 02 20 0.843313045760178 > > 05 02 21 0.757193220375875 > > 05 02 22 0.65352100387166 > > 05 02 23 0.68252482652902 > > 05 02 24 0.624510062816789 > > 05 02 25 0.479854370620533 > > 05 02 26 0.359002279153697 > > 05 02 27 0.212459089641907 > > 05 02 28 0.240784160160447 > > 05 03 01 0.144583652487177 > > 05 03 02 0.0345028244394553 > > 05 03 21 0.023582430982633 > > 05 03 22 0.000293765928922767 > > 05 03 27 0.0440288222469235 > > 05 03 28 0.106263428254761 > > 05 03 29 0.291212461872628 > > 05 03 30 0.198305017329253 > > 05 03 31 0.186935599530143 > > 05 04 01 0.316471519561273 > > 05 04 02 0.266260602009615 > > 05 04 03 0.0456391152384458 > > 05 04 04 0.113939833419049 > > 05 04 05 0.140500137811164 > > 05 04 06 0.374670064516577 > > 05 04 07 0.295820206701906 > > 05 04 08 0.0833493810907385 > > 05 04 10 0.0253248646840757 > > 05 04 11 0.188773903020133 > > 05 04 12 0.206619775067284 > > 05 04 13 0.408503282817833 > > 05 04 14 0.344129922512134 > > 05 04 15 0.283273728250647 > > 05 04 16 0.155780334719261 > > 05 04 17 0.0815692243668445 > > B is extracted from A and I wish to plot A and B on the same x-axis > > but different y axis on the same graph. Stacking very close helps to > > illustrates the common rapid variations in A, represented in B. > > > > One of the codes I tried without success is: > > data <- read.table("A", col.names = c("year", "month", "day", "counts")) > > > > new.century <- data$year < 50 > > > > data$year <- ifelse(new.century, data$year + 2000, data$year + 1900) > > > > data$date <- as.Date(ISOdate(data$year, data$month, data$day)) > > x1 = data$date > > y1=data$counts > > #y1=scale(data$counts) > > > > > > data <- read.table("B", col.names = c("year", "month", "day", "counts")) > > > > new.century <- data$year < 50 > > > > data$year <- ifelse(new.century, data$year + 2000, data$year + 1900) > > > > data$date <- as.Date(ISOdate(data$year, data$month, data$day)) > > x2 = data$date > > y2=data$counts > > > > > > pdf("PLOT.pdf") > > > > par(mar=c(5,5,5,5)) > > > > plot(x1,y1,pch=0,type="b",col="red",yaxt="n",ylim=c(- > 5.470919,1.298329),ylab="") > > axis(side=2, at=c(-6,0,2)) > > mtext("red line", side = 2, line=2.5, at=0) > > > > par(new=TRUE) > > plot(x2,y2,pch=1,type="b",col="blue",yaxt="n",ylim=c(-4.808186,0.0), > ylab="") > > axis(side=4, at=c(-5,-1,0), labels=c("98%","100%","102%")) > > mtext("blue line", side=4, line=2.5, at=100) > > dev.off() > > > > Your assistance is ever appreciated. > > Best wishes > > Ogbos > > > > ______________________________________________ > > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/posting- > guide.html > > and provide commented, minimal, self-contained, reproducible code. > > > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting- > guide.html > and provide commented, minimal, self-contained, reproducible code.