Hi Lattice-Experts/Hi Deepayan,
I have been searching the archives for an answer to this, but am finally
giving up:
I am plotting stripplots above each other using
stripplot(type ~ date, data = email)
which looks exactely as I want (type is a factor with 8 levels). I
addition I would now like to display for each stripplot a density curve.
From examples I would have thought I would need to do:
stripplot(type ~ date2, data = email,
panel = function(x, y, ...) {
panel.stripplot(x, y, ...)
panel.densityplot(x, y, ...)
})
This works as far as the stripplot part is concerned. But
a.) panel.densityplot does not take a y argument.
b.) even if I drop y, no density curve shows up (I guess I am missing
correct dargs here)
I have been toying with
- using panel.superpose but guess that this is not the right approach,
since I do not have a grouping variable (and I have not succeeded in
letting "~ date2 | type" and "~date, groups=email$type" look
the way I
want).
- using densityplot instead of stripplot, but then panel.stripplot
complains that argument y is missing. :-(
Many thanks for any advice/ideas!
Christopher
--
Christopher Oezbek
Arbeitsgruppe Software Engineering
Institut f?r Informatik
Freie Universit?t Berlin
Takustr. 9, 14195 Berlin, Germany
+49 30 838 75242, Raum 008
http://www.inf.fu-berlin.de/~oezbek/
On 12/6/07, Christopher Oezbek <oezbek at inf.fu-berlin.de> wrote:> Hi Lattice-Experts/Hi Deepayan, > I have been searching the archives for an answer to this, but am finally > giving up: > > I am plotting stripplots above each other using > > stripplot(type ~ date, data = email) > > which looks exactely as I want (type is a factor with 8 levels). I > addition I would now like to display for each stripplot a density curve. > > From examples I would have thought I would need to do: > > stripplot(type ~ date2, data = email, > panel = function(x, y, ...) { > panel.stripplot(x, y, ...) > panel.densityplot(x, y, ...) > })What examples? panel.stripplot and panel.densityplot have entirely different expectations about what the y-range of the panel is going to be, and they cannot be mixed. Sounds like you want something like panel.violin (?panel.violin has an example). -Deepayan
Hi Deepayan!
thank you! panel.violin with the following modification works as I want:
grid.polyline(x = dx.list[[i]], y = dy.list[[i]], ...
instead of
grid.polygon(x = c(dx.list[[i]], rev(dx.list[[i]])),
y = c(dy.list[[i]], -rev(dy.list[[i]])), ...
>> From examples I would have thought I would need to do...
>
> What examples?
The examples for writing your own panel functions. I was not aware that
there were different expectations regarding arguments.
> panel.stripplot and panel.densityplot have entirely
> different expectations about what the y-range of the panel is going to
> be, and they cannot be mixed.
But is there a technical reason for making this distinction? It seemed to
me that most panel functions can deal with x and y parameters and that
panel.densityplot could make use of the same mechanisms as panel.violin to
subdivide based on factor y.
Again many thanks for the fast response,
Christopher
--
Christopher Oezbek
Arbeitsgruppe Software Engineering
Institut f?r Informatik
Freie Universit?t Berlin
Takustr. 9, 14195 Berlin, Germany
+49 30 838 75242, Raum 008
http://www.inf.fu-berlin.de/~oezbek/
On 12/6/07, Christopher Oezbek <oezbek at inf.fu-berlin.de> wrote:> But is there a technical reason for making this distinction? It seemed to > me that most panel functions can deal with x and y parameters and that > panel.densityplot could make use of the same mechanisms as panel.violin to > subdivide based on factor y.The technical reason is a fundamental part of the Trellis design. The prepanel function determines a bounding box as part of the initial calculations. Knowing this in advance allows the panel display and the axis rendering to be completely separated. Note that the panel.violin plot cannot easily say anything about the actual heights of the densities, only their shape. The y-axis there annotates the sample groups. -Deepayan