Filling bars with lines/grids/points is legacy back to the days when the only 
way to get high quality plots was to use a pen plotter (on the screen you would 
see bars made of '*' or similar).  The pen plotter would use a mechanical arm 
to draw the lines using a pen/marker.  it was easy to have the pen draw lines 
in a rectangle, but filling the rectangle with color just meant drawing the 
lines so close together that there was not space between them (and getting 
everyone else mad at you because it took so long, used up all the ink, and 
usually made holes in your paper).
 
With modern graphics devices, filling the rectangle with a solid color is 
simpler than the lines.
 
Using lines/grids can also lead to various optical illusions of colors or 
movement (called a Moire effect), see Tufte's book on displaying quantitative 
information for some detail on this.
 
Some patterns can also make some bars appear longer or shorter (the gradient 
patterns that are popular in some areas).
 
Using shading lines, patterns should be used carefully because of this (it is 
best to do a simple graph to compare to your more fancy version to compare and 
see if there are any visual distortions due to fills).
 
If you really want to try the different fills, there are a couple of options. 
 
You can create the barplot with a unique color as the fill and save this to a 
graphics file.  Then create (or find) the fill you want  and save that to a 
graphics file.  Use an external graphics manipulation program such as 
Imagemagick or gimp2 to then replace the bar fills with the pattern.
 
If you want a pure R solution then you can do something like this (replace 
tmpfun with any function that adds the fill pattern of interest to an existing 
plot):
 
library(TeachingDemos)
tmp.dat <- table( sample( letters[1:4], 1000, replace=TRUE) )
tmp1 <- barplot(tmp.dat, col=NA, width=1, ylim=c(-5,max(tmp.dat)+5))
tmp2 <- par('usr')
tmpfun <- function(){
 tmp.x <- seq(tmp2[1], tmp2[2], length=50)
 tmp.y <- seq(tmp2[3], tmp2[4], length=50)
 points( expand.grid(x=tmp.x, y=tmp.y), pch='.' )
}
for (i in seq(along=tmp1) ){
 clipplot( tmpfun(), xlim=tmp1[i] + c(-0.5,0.5), ylim=c(0,tmp.dat[i]) )
}
 
Again, always compare such plots to one without fill (or solid fill), to make 
sure that you are not distorting/distracting/etc.
 
Hope this helps,
 

 
 
________________________________

From: [EMAIL PROTECTED] on behalf of yaosheng CHEN
Sent: Mon 1/28/2008 8:08 AM
To: Domenico Vistocco
Cc: r-help@r-project.org
Subject: Re: [R] How to fill bar plot with textile rather than color



Thank you, and also thanks to John Kane.

I did some tests last night, if you plot something like

height <- t(t(c(1,-1,1)))
bardensity <- t(t(c(10,10,0)))
barangle <- t(t(c(45,135,0)))
barplot(height, density = bardensity, angle = barangle)

You can get grids. Otherwise, only slanted lines or colors.
I thought filling with dots or grids is quite common in traditional bar chart.
But most softwares, including Matlab, SAS, Excel2k7, and gunplot, as I
know, don't have such options.
Anyway, thank you again. Let me know if you find any package which can
fill bar plot with dots

On Jan 28, 2008 4:13 AM, Domenico Vistocco <[EMAIL PROTECTED]> wrote:
> If you type
>
>  > example(barplot)
>
> you will find an example.
>
> Ciao,
> domenico
>
> CHENYS wrote:
> > Hi, I'm looking for a tool which can fill bar chart with dash, skewed line,
> > or grids, rather than pure color. Any one have the idea how to do that in R?
> > Or maybe in Matlab will also be helpful.
> >
> > Thanks very much.
> >
>
>

______________________________________________
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.

Reply via email to