[R] how do I draw such a barplot?

hadley wickham h.wickham at gmail.com
Tue Jul 17 06:26:08 CEST 2007


On 7/16/07, Donatas G. <dgvirtual at akl.lt> wrote:
> Hi,
>
> I cannot figure out how to draw a certain plot: could someone help me out?
>
> I have this data.frame from a survey
> my.data
>
> that looks like something like this:
>
>    col1  col2  col3  col4
> 1     5     5     4     5
> 2     3     5     3     1
> 3     2     3     4     5
> 4     3     1     1     2
> 5     5     5     4     5
> 6     4     2     5     5
> ....
>
>
> Each row represents a single questionnaire with someone giving his
> agreement/disagreement with a statement (each column is a statement) that is
> coded from 1 to 5.
>
> I need to draw a barplot giving a visual representation showing differences
> between the five columns: Each bar should represent a single column, and
> should be divided into 5 sections, the thickness of each depending on the
> number of respondents who choose that particular answer.
>
> How do I do that? All I have managed to do so far is to produce a barplot of a
> single column, and that - only with bars side by side...

One way would be the use the ggplot2 and reshape packages:

library(ggplot2)
df <- as.data.frame(matrix(sample(1:5, 100, rep=T), ncol=5))

dfm <- melt(df, m=1:5)
qplot(variable, data=dfm, geom="bar", fill=factor(value))
qplot(variable, data=dfm, geom="bar", fill=factor(value), position="dodge")
qplot(variable, data=dfm, geom="bar", fill=factor(value), facets = . ~ value)

Hadley



More information about the R-help mailing list