Hello! If you run the whole code below, it'll produce a stacked diagram. And it looks good - because the tick-marks are aligned with the grid. However, if I stretch the graph window, grid becomes misaligned with the tickmarks. Or, rather, it seems aligned for the first and the last tick mark, but not for tickmarks in between. Can it be addressed? Thank you!
Dimitri ### Creating a data set with both positives and negatives my.data<-data.frame(date=c(20080301,20080401,20080501,20080601,20080701,20080801,20080901,20081001,20081101,20081201,20090101,20090201,20090301,20090401,20090501,20090601,20090701,20090801,20090901,20091001,20091101,20091201,20100101,20100201,20100301,20100402,20100503), x=c(1.1, 1, 1.6, 1, 2, 1.5, 2.1, 1.3, 1.9, 1.1, 1, 1.6, 1, 2, 1.5, 2.1, 1.3, 1.9, 1.1, 1, 1.6, 1, 2, 1.5, 2.1, 1.3, 1.9), y=c(-4,-3,-6,-5,-7,-5.2,-6,-4,-4.9,-4,-3,-6,-5,-7,-5.2,-6,-4,-4.9,-4,-3,-6,-5,-7,-5.2,-6,-4,-4.9), z=c(-0.2,-0.3,-0.4,-0.1,-0.2,-0.05,-0.2,-0.15,-0.06,-0.2,-0.3,-0.4,-0.1,-0.2,-0.05,-0.2,-0.15,-0.06,-0.06,-0.2,-0.3,-0.4,-0.1,-0.2,-0.05,-0.2,-0.15), a=c(10,13,15,15,16,17,15,16,14,10,13,15,15,16,17,15,16,14,10,13,15,15,16,17,15,16,14)) my.data$date<-as.character(my.data$date) my.data$date<-as.Date(my.data$date,"%Y%m%d") (my.data) str(my.data) positives<-which(colSums(my.data[2:ncol(my.data)])>0) # which vars have positive column sums? negatives<-which(colSums(my.data[2:ncol(my.data)])<0) # which vars have negative column sums? y.max<-1.1*max(rowSums(my.data[names(positives)])) # the max on the y axis of the chart y.min<-1.1*min(rowSums(my.data[names(negatives)])) # the min on the y axis of the chart ylim <- c(y.min, y.max) order.positives<-rev(rank(positives)) order.of.pos.vars<-names(order.positives) order.negatives<-rev(rank(negatives)) order.of.neg.vars<-names(order.negatives) order<-c(order.negatives,order.positives) order.of.vars<-names(order) # the order of variables on the chart - from the bottom up ### so, the bottom-most area should be for z, the second from the bottom area- for y (above z) all.colors<-c('red','blue','green','orange','yellow','purple') xx <- c(my.data$date, rev(my.data$date)) bottom.y.coordinates<-rowSums(my.data[names(negatives)]) par(mar=c(5,4,4,6),xpd=F) plot(x=my.data$date, y=bottom.y.coordinates, ylim=ylim, col='white', type='l', xaxt='n', ylab='Title for Y', xlab="", main='Chart Title') for(var in order.of.neg.vars){ top.line.coords<-bottom.y.coordinates-my.data[[var]] bottom.coords<-c(bottom.y.coordinates,rev(top.line.coords)) polygon(xx,bottom.coords,col=all.colors[which(names(my.data) %in% var)]) bottom.y.coordinates<-top.line.coords } for(var in order.of.pos.vars){ top.line.coords<-bottom.y.coordinates+my.data[[var]] bottom.coords<-c(bottom.y.coordinates,rev(top.line.coords)) polygon(xx,bottom.coords,col=all.colors[which(names(my.data) %in% var)]) bottom.y.coordinates<-top.line.coords } axis(1, labels =format(as.Date(my.data$date, origin="1970-01-01"), "%Y-%m-%d"), at=my.data$date, las=2,cex.axis=0.7) grid(nx=(length(my.data$date)-1),ny=NULL,col = "lightgray", lty = "dotted",lwd = par("lwd")) legend(par()$usr[2], mean(par()$usr[3:4]), c("Blue","Yellow","Green","Orange"), xpd=T, bty="n", pch=12, col=c("Blue","Yellow","Green","Orange")) ______________________________________________ R-help@r-project.org mailing list 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.