[R] Define pch and color based on two different columns

Matthew Snyder m@nyder424 @end|ng |rom gm@||@com
Wed Apr 10 06:28:00 CEST 2019


I want to have one column in a dataframe define the color and another
define the pch.

This can be done easily with a single panel:

xyplot(mpg ~ wt,
       data=mtcars,
       col = mtcars$gear,
       pch = mtcars$carb
)

This produces the expected result: two pch that are the same color are
unique in the whole plot. But when you add cyl as a factor. Those two
points are only unique within their respective panels, and not across the
whole plot.

Matt



*Matthew R. Snyder*
*~~~~~~~~~~~~~~~~~*
PhD Candidate
University Fellow
University of Toledo
Computational biologist, ecologist, and bioinformatician
Sponsored Guest Researcher at NOAA PMEL, Seattle, WA.
Matthew.Snyder6 using rockets.utoledo.edu
MSnyder424 using gmail.com




[image: Mailtrack]
<https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&>
Sender
notified by
Mailtrack
<https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&>
04/09/19,
9:26:09 PM

On Tue, Apr 9, 2019 at 9:23 PM Bert Gunter <bgunter.4567 using gmail.com> wrote:

> 1. I am quite sure that whatever it is that you want to do can be done.
> Probably straightforwardly. The various R graphics systems are mature and
> extensive.
>
> 2. But I, for one, do not understand from your post what it is that you
> want to do.  Nor does anyone else apparently.
>
> Cheers,
>
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along and
> sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Tue, Apr 9, 2019 at 8:10 PM Matthew Snyder <msnyder424 using gmail.com>
> wrote:
>
>> Thanks, Jim.
>>
>> I appreciate your contributed answer, but neither of those make the
>> desired
>> plot either. I'm actually kind of shocked this isn't an easier more
>> straightforward thing. It seems like this would be something that a user
>> would want to do frequently. I can actually do this for single plots in
>> ggplot. Maybe I should contact the authors of lattice and see if this is
>> something they can help me with or if they would like to add this as a
>> feature in the future...
>>
>> Matt
>>
>>
>>
>> *Matthew R. Snyder*
>> *~~~~~~~~~~~~~~~~~*
>> PhD Candidate
>> University Fellow
>> University of Toledo
>> Computational biologist, ecologist, and bioinformatician
>> Sponsored Guest Researcher at NOAA PMEL, Seattle, WA.
>> Matthew.Snyder6 using rockets.utoledo.edu
>> MSnyder424 using gmail.com
>>
>>
>>
>> [image: Mailtrack]
>> <
>> https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&
>> >
>> Sender
>> notified by
>> Mailtrack
>> <
>> https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&
>> >
>> 04/09/19,
>> 7:52:27 PM
>>
>> On Tue, Apr 9, 2019 at 4:53 PM Jim Lemon <drjimlemon using gmail.com> wrote:
>>
>> > Hi Matthew,
>> > How about this?
>> >
>> > library(lattice)
>> > xyplot(mpg ~ wt | cyl,
>> >        data=mtcars,
>> >        col = mtcars$gear,
>> >        pch = mtcars$carb
>> > )
>> > library(plotrix)
>> > grange<-range(mtcars$gear)
>> > xyplot(mpg ~ wt | cyl,
>> >        data=mtcars,
>> >        col =
>> > color.scale(mtcars$gear,extremes=c("blue","red"),xrange=grange),
>> >        pch = as.character(mtcars$carb)
>> > )
>> >
>> > Jim
>> >
>> > On Wed, Apr 10, 2019 at 7:43 AM Matthew Snyder <msnyder424 using gmail.com>
>> > wrote:
>> > >
>> > > I am making a lattice plot and I would like to use the value in one
>> > column
>> > > to define the pch and another column to define color of points.
>> Something
>> > > like:
>> > >
>> > > xyplot(mpg ~ wt | cyl,
>> > >        data=mtcars,
>> > >        col = gear,
>> > >        pch = carb
>> > > )
>> > >
>> > > There are unique pch points in the second and third panels, but these
>> > > points are only unique within the plots, not among all the plots (as
>> they
>> > > should be). You can see this if you use the following code:
>> > >
>> > > xyplot(mpg ~ wt | cyl,
>> > >        data=mtcars,
>> > >        groups = carb
>> > > )
>> > >
>> > > This plot looks great for one group, but if you try to invoke two
>> groups
>> > > using c(gear, carb) I think it simply takes unique combinations of
>> those
>> > > two variables and plots them as unique colors.
>> > >
>> > > Another solution given by a StackExchange user:
>> > >
>> > > mypch <- 1:6
>> > > mycol <- 1:3
>> > >
>> > > xyplot(mpg ~ wt | cyl,
>> > >           panel = function(x, y, ..., groups, subscripts) {
>> > >               pch <- mypch[factor(carb[subscripts])]
>> > >               col <- mycol[factor(gear[subscripts])]
>> > >               grp <- c(gear,carb)
>> > >               panel.xyplot(x, y, pch = pch, col = col)
>> > >           }
>> > > )
>> > >
>> > > This solution has the same problems as the code at the top. I think
>> the
>> > > issue causing problems with both solutions is that not every value for
>> > each
>> > > group is present in each panel, and they are almost never in the same
>> > > order. I think R is just interpreting the appearance of unique values
>> as
>> > a
>> > > signal to change to the next pch or color. My actual data file is very
>> > > large, and it's not possible to sort my way out of this mess. It
>> would be
>> > > best if I could just use the value in two columns to actually define a
>> > > color or pch for each point on an entire plot. Is there a way to do
>> this?
>> > >
>> > > Ps, I had to post this via email because the Nabble site kept sending
>> me
>> > an
>> > > error message: "Message rejected by filter rule match"
>> > >
>> > > Thanks,
>> > > Matt
>> > >
>> > >
>> > >
>> > > *Matthew R. Snyder*
>> > > *~~~~~~~~~~~~~~~~~*
>> > > PhD Candidate
>> > > University Fellow
>> > > University of Toledo
>> > > Computational biologist, ecologist, and bioinformatician
>> > > Sponsored Guest Researcher at NOAA PMEL, Seattle, WA.
>> > > Matthew.Snyder6 using rockets.utoledo.edu
>> > > MSnyder424 using gmail.com
>> > >
>> > >
>> > >
>> > > [image: Mailtrack]
>> > > <
>> >
>> https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&
>> > >
>> > > Sender
>> > > notified by
>> > > Mailtrack
>> > > <
>> >
>> https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&
>> > >
>> > > 04/09/19,
>> > > 1:49:27 PM
>> > >
>> > >         [[alternative HTML version deleted]]
>> > >
>> > > ______________________________________________
>> > > R-help using 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.
>> >
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help using 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.
>>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list