[R] Plotting range of values in barplot()
Marc Schwartz
marc_schwartz at me.com
Thu Aug 5 22:02:13 CEST 2010
On Aug 5, 2010, at 1:22 PM, yankeetilidie wrote:
>
> Hello,
>
> I am attempting to create a bar plot that contains a range of possible
> response values on the x-axis of 1 to 5 and contains barplots for the number
> of responses even in the event that there are 0 responses. For example, I
> have a data set that contains values of 2, 3, 4, and 5 but I would also like
> my graph to show that there are no 1's.
>
> I have attached the resulting graph. The appropriate values should be 0 -
> Strongly Disagree, 1 - Somewhat Disagree, 2 - Neutral, 7 - Somewhat Agree,
> and 12 - Strongly Agree.
>
> Any suggestions would be much appreciated as I am new to R.
>
> Thanks,
> Steve
>
> http://r.789695.n4.nabble.com/file/n2315414/graph.jpg
barplot() will plot the tabulation of the variables included in the available data set. If you want to include missing categories, then you need to set the underlying raw data to a factor, specifying the additional levels for the missing categories.
So, presuming that you have the raw data in a vector 'MyData':
MyData <- c("Somewhat Disagree", rep("Neutral", 2),
rep("Somewhat Agree", 7), rep("Strongly Agree", 12))
> MyData
[1] "Somewhat Disagree" "Neutral" "Neutral"
[4] "Somewhat Agree" "Somewhat Agree" "Somewhat Agree"
[7] "Somewhat Agree" "Somewhat Agree" "Somewhat Agree"
[10] "Somewhat Agree" "Strongly Agree" "Strongly Agree"
[13] "Strongly Agree" "Strongly Agree" "Strongly Agree"
[16] "Strongly Agree" "Strongly Agree" "Strongly Agree"
[19] "Strongly Agree" "Strongly Agree" "Strongly Agree"
[22] "Strongly Agree"
> table(MyData)
MyData
Neutral Somewhat Agree Somewhat Disagree Strongly Agree
2 7 1 12
Now, create a factor with the categories in the order that you want and with the additional level(s) that refer to missing categories:
MyData <- factor(MyData, levels = c("Strongly Disagree", "Somewhat Disagree",
"Neutral", "Somewhat Agree", "Strongly Agree"))
> table(MyData)
MyData
Strongly Disagree Somewhat Disagree Neutral Somewhat Agree
0 1 2 7
Strongly Agree
12
Now do the barplot():
MyTab <- table(MyData)
barplot(MyTab, names.arg = MyTab)
HTH,
Marc Schwartz
More information about the R-help
mailing list