Roland Seubert
2013-Jan-07 11:21 UTC
[R] Log scale on y axis of parallel coordinate plot (lattice)
Hello all, I would like to make a parallel coordinate plot with lattice. The plot should have vertical log scale axes, and should in principle look like this one (I put less chemical elements in my example below): http://www.geokem.com/images/scans/epr-and-N_Chile_Ridge.gif The data I am trying to plot are chemical analyses of rock samples (data frame "df"). The data needs to be normalised against a reference sample (vector "norm"), to get the actual data to be plotted (data frame "df_n"). Here is a simplified example: > df <- data.frame(La = c(3.0, 2.9, 2.7), Eu = c(0.86, 0.76, 0.66), Lu = c(0.07, 0.04, 0.04), row.names = c("sample1", "sample2", "sample3")) > norm <- c(0.237, 0.0563, 0.0246) > df_n <- df / norm > df_n La Eu Lu sample1 12.65823 3.628692 0.2953586 sample2 51.50977 13.499112 0.7104796 sample3 109.75610 26.829268 1.6260163 The plot needs the same scale for all axes, so my simple panel function would be: > panel.myplot <- function(..., common.scale) {panel.parallel(..., common.scale = TRUE)} I tried to plot the data with the following command to get vertical axes with a log scale: > parallelplot(~ df_n, panel = panel.myplot, horizontal.axis = FALSE, scales = list(y = list(log = 10))) The problem is that lattice simply ignores the log scale and gives me the following warning: Warning message: In parallelplot.formula(~df_n, panel = panel.spiderplot, horizontal.axis = FALSE, : cannot have log y-scale I browsed through the source code of the respective lattice source file and it seems to me that lattice does not support a log scale for y axes in parallel coordinate plots? I would greatly appreciate if anyone had an idea how to make this plot with lattice or point me to some kind of workaround. Thanks a lot in advance, Roland
Patrick Connolly
2013-Jan-16 19:05 UTC
[R] Log scale on y axis of parallel coordinate plot (lattice)
On Mon, 07-Jan-2013 at 10:21PM +1100, Roland Seubert wrote: |> Hello all, |> |> I would like to make a parallel coordinate plot with lattice. The |> plot should have vertical log scale axes, and should in principle |> look like this one (I put less chemical elements in my example |> below): |> |> http://www.geokem.com/images/scans/epr-and-N_Chile_Ridge.gif |> |> The data I am trying to plot are chemical analyses of rock samples |> (data frame "df"). The data needs to be normalised against a |> reference sample (vector "norm"), to get the actual data to be |> plotted (data frame "df_n"). Here is a simplified example: |> |> > df <- data.frame(La = c(3.0, 2.9, 2.7), Eu = c(0.86, 0.76, 0.66), |> Lu = c(0.07, 0.04, 0.04), row.names = c("sample1", "sample2", |> "sample3")) |> > norm <- c(0.237, 0.0563, 0.0246) |> > df_n <- df / norm |> > df_n |> La Eu Lu |> sample1 12.65823 3.628692 0.2953586 |> sample2 51.50977 13.499112 0.7104796 |> sample3 109.75610 26.829268 1.6260163 |> |> The plot needs the same scale for all axes, so my simple panel |> function would be: |> |> > panel.myplot <- function(..., common.scale) {panel.parallel(..., |> common.scale = TRUE)} |> |> I tried to plot the data with the following command to get vertical |> axes with a log scale: |> |> > parallelplot(~ df_n, panel = panel.myplot, horizontal.axis |> FALSE, scales = list(y = list(log = 10))) |> |> The problem is that lattice simply ignores the log scale and gives |> me the following warning: |> |> Warning message: |> In parallelplot.formula(~df_n, panel = panel.spiderplot, |> horizontal.axis = FALSE, : |> cannot have log y-scale Check out how to use the scales list in the help for xyplot(). You might need to brush up on how the help for axis() to see which parameters you need to set. HTH -- ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~. ___ Patrick Connolly {~._.~} Great minds discuss ideas _( Y )_ Average minds discuss events (:_~*~_:) Small minds discuss people (_)-(_) ..... Eleanor Roosevelt ~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.