Hi Dennise, David and Jorge, I hope you all had a great holiday season. Thank you so much for the good comments. I think all your suggestions are sufficient for my current needs. I guess it is safe to say that there is no easy way to plot the data according to the x-axis range. By the way, spotfire can achieve this beautifully.
Eric ________________________________ From: Dennis Murphy [mailto:djmu...@gmail.com] Sent: Friday, December 24, 2010 12:43 PM To: Eric Hu Cc: r-help@r-project.org Subject: Re: [R] Non-uniformly distributed plot Hi: One way to combine Jorge's and David's solutions is to visualize the data in ggplot2 and/or lattice: library(ggplot2) x <- c(0.349763, 3.39489, 1.52249, 0.269066, 0.107872, 0.0451689, 0.590268, 0.275755, 0.751845, 1.00599, 0.652409, 2.80664, 0.0269933, 0.137307, 0.282939, 1.23008, 0.436429, 0.0555626, 1.10624, 53, 1.30411, 1.29749, 53, 3.2552, 1.189, 2.23616, 1.13259, 0.505039, 1.05812, 1.18238, 0.500926, 1.0314, 0.733468, 3.13292, 1.26685, 3.10882, 1.01719, 0.13096, 0.0529692, 0.418408, 0.213299, 0.536631, 1.82336, 1.15287, 0.192519, 0.961295, 51, 0.470511, 4.05688, 1.78098, 0.364686, 1.24533) y <- c(0.423279, 0.473681, 0.629478, 1.09712, 0.396239, 0.273577, 0.303214, 0.628386, 0.465841, 0.687251, 0.544569, 0.635805, 0.358983, 0.16519, 0.366217, 1.08421, 0.668939, 0.181861, 0.782656, 13.3816, 1.15256, 0.965943, 20, 2.86051, 0.304939, 1.94654, 0.967576, 0.647599, 0.520811, 1.27434, 0.363666, 0.93621, 0.544573, 0.696733, 1.0031, 3.78895, 0.694053, 0.289111, 0.178439, 0.746576, 0.391725, 0.363901, 1.20297, 0.461934, 0.364011, 0.691368, 20, 0.81947, 1.69594, 1.56381, 0.900398, 0.960948) d <- data.frame(x, y) g <- ggplot(d, aes(log(x), log(y)) g + geom_point() + geom_smooth(colour = 'red', size = 1) + geom_smooth(method = 'lm', colour = 'blue', size = 1) The default smooth is a loess curve, which shows the curvature present in the residual vs. fitted plot from Jorge's solution. The predicted values from the linear model in the log-log scale lie along the blue line. (To get rid of the confidence curves, add se = FALSE to both geom_smooth() calls above.) If you were to fit a model to these data in the log-log scale, the plot indicates that a quadratic polynomial would be a reasonable next step. This is pretty easy to do in lattice as well (sans the confidence curves): library(lattice) xyplot(log(y) ~ log(x), data = d, type = c('p', 'r', 'smooth'), pch = 16, col = 'black', panel = function(x, y, ...) { panel.xyplot(x, y, ..., col.line = 'blue') panel.loess(x, y, col.line = 'red') } ) I needed to write a small panel function to get separate colors for the least squares line and loess curves, but maybe there's an easier way (col.line = c('blue', 'red') by itself doesn't work - I tried that - and it makes sense to me why it doesn't). Dennis On Thu, Dec 23, 2010 at 3:50 PM, David Winsemius <dwinsem...@comcast.net<mailto:dwinsem...@comcast.net>> wrote: On Dec 23, 2010, at 6:41 PM, David Winsemius wrote: On Dec 23, 2010, at 5:55 PM, Eric Hu wrote: Thanks David. I am reposting the data here. Jorge has already responded masterfully. He's apparently less lazy that I and did all the editing. A log transformation as he illustrated can be very useful with bivariate skewed distributions. The only variation I would have suggested would be to record the default par settings and restore them at the end. You could also repeat the plot an use abline to look at the predicted values plot(x,y, log="xy") lines( log(x), fit$predicted) It's complementary to the residual plot and the QQ plot in the plot.lm display for consideration of the possibility that this may not be a truly log-log-linear relationship. -- David Eric Hi, I would like to plot a linear relationship between variable x and y. Can anyone help me with scaled plotting and axes so that all data points can be visualized somehow evenly? Plaint plot(x,y) will generate condensed points near (0,0) due to several large data points. Thank you. Eric dput(x) c(0.349763, 3.39489, 1.52249, 0.269066, 0.107872, 0.0451689, 0.590268, 0.275755, 0.751845, 1.00599, 0.652409, 2.80664, 0.0269933, 0.137307, 0.282939, 1.23008, 0.436429, 0.0555626, 1.10624, 53, 1.30411, 1.29749, 53, 3.2552, 1.189, 2.23616, 1.13259, 0.505039, 1.05812, 1.18238, 0.500926, 1.0314, 0.733468, 3.13292, 1.26685, 3.10882, 1.01719, 0.13096, 0.0529692, 0.418408, 0.213299, 0.536631, 1.82336, 1.15287, 0.192519, 0.961295, 51, 0.470511, 4.05688, 1.78098, 0.364686, 1.24533) dput(y) c(0.423279, 0.473681, 0.629478, 1.09712, 0.396239, 0.273577, 0.303214, 0.628386, 0.465841, 0.687251, 0.544569, 0.635805, 0.358983, 0.16519, 0.366217, 1.08421, 0.668939, 0.181861, 0.782656, 13.3816, 1.15256, 0.965943, 20, 2.86051, 0.304939, 1.94654, 0.967576, 0.647599, 0.520811, 1.27434, 0.363666, 0.93621, 0.544573, 0.696733, 1.0031, 3.78895, 0.694053, 0.289111, 0.178439, 0.746576, 0.391725, 0.363901, 1.20297, 0.461934, 0.364011, 0.691368, 20, 0.81947, 1.69594, 1.56381, 0.900398, 0.960948) David Winsemius, MD West Hartford, CT ______________________________________________ R-help@r-project.org<mailto: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. David Winsemius, MD West Hartford, CT ______________________________________________ R-help@r-project.org<mailto: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. [[alternative HTML version deleted]] ______________________________________________ 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.