On Jan 16, 2014, at 12:45 PM, Martin Weiser <weiser2 at natur.cuni.cz>
wrote:
> Dear listers,
>
> I would like to make stacked barplot, and to be able to define shading
> (density or angle) segment-wise, i.e. NOT like here:
> # Bar shading example
> barplot(VADeaths, angle = 15+10*1:5, density = 20, col =
"black",
> legend = rownames(VADeaths))
>
> The example has 5 different angles of shading, I would like to have as
> many possible angle values as there are segments (i.e. 20 in the
> VADeaths example).
> I was not successful using web search.
> Any advice?
>
> Thank you for your patience.
> With the best regards,
> Martin Weiser
You could do something like this:
# Get the dimensions of VADeaths> dim(VADeaths)
[1] 5 4
# How many segments?> prod(dim(VADeaths))
[1] 20
Then use that value in the barplot() arguments as you desire, for example:
barplot(VADeaths, angle = 15 + 10 * 1:prod(dim(VADeaths)),
density = 20, col = "black", legend = rownames(VADeaths))
or wrap the barplot() function in your own, which pre-calculates the values and
then passes them to the barplot() call in the function.
See ?dim and ?prod
Be aware that a vector (eg. 1:5) will be 'dim-less', thus if you are
going to use this approach for a vector based data object, you would want to use
?length
Regards,
Marc Schwartz