[R] Help with color coded bar graph
Luis Naver
luis.naver at gmail.com
Sat Sep 8 00:03:00 CEST 2007
Thanks to all who replied (and very quickly). Unfortunatly I was
not clear enough as to my intentions. My goal is to replicate a
graph I saw in the work by Perry, Miller and Enright in "A comparison
of methods for the statistical analysis of spatial point patterns in
plant ecology" (http://www.springerlink.com/content/
013275pp7376v0hx). For those without the article here is a copy of
the graph in question (replicated without permission) http://
img511.imageshack.us/img511/8720/barexamplejl8.png.
As you can see in the example, there are several hoizontal bars,
colored by the values in an array (one for each bar).
I've been thinking of following your examples but setting it to
stack, such that all the elements would be placed one on top
another. While this may work it seems particularly ungraceful.
Again, thanks for the help.
-Luis Naver
On Sep 7, 2007, at 1:21 PM, Marc Schwartz wrote:
> On Fri, 2007-09-07 at 15:07 -0500, Marc Schwartz wrote:
>> On Fri, 2007-09-07 at 12:45 -0700, Luis Naver wrote:
>>> I have a list of observations that are -1, 1 or 0. I would like to
>>> represent them in a horizontal bar color coded based on value like a
>>> stacked bar graph. I can achieve this in the form of a png with the
>>> following code:
>>>
>>> A = floor(runif(10)*3) - 1
>>>
>>> png(width=100, height=10)
>>> par(mar=c(0,0,0,0))
>>> image(matrix(A), col=grey(c(0.1, 0.5, 0.9)))
>>> dev.off()
>>>
>>> However I would like to do this with one of the standard plotting
>>> tools (i.e. barplot) to take advantage of labels and multiple
>>> series. Any help would be appreciated.
>>>
>>> - Luis Naver
>>
>> How about this:
>>
>> barplot(rep(1, length(A)), col = "black", space = 0, border = 0)
>>
>> barplot(A, col = grey(0.9), space = 0, border = 0, add = TRUE)
>>
>> The first call sets the plot region to black, ensuring that the x
>> and y
>> axes are consistent with the second call.
>>
>> Alternatively, you can use barplot2() in the gplots CRAN package
>> to do
>> this in a single call, as it has an argument to color the plot
>> region.
>
> Actually, here is an easier way:
>
> barplot(rep(1, length(A)),
> col = ifelse(A == 0, "black", grey(0.9)), space = 0, border
> = 0)
>
> Just set 'col' based upon the value in 'A'.
>
> HTH,
>
> Marc
>
>
More information about the R-help
mailing list