# Bar Chart

# barplot() function

In barplot, factor-levels are placed on the x-axis and frequencies (or proportions) of various factor-levels are considered on the y-axis. For each factor-level one bar of uniform width with heights being proportional to factor level frequency (or proportion) is constructed.

The barplot() function is in the graphics package of the R's System Library. The barplot() function must be supplied at least one argument. The R help calls this as heights, which must be either vector or a matrix. If it is vector, its members are the various factor-levels.

To illustrate barplot(), consider the following data preparation:

> grades<-c("A+","A-","B+","B","C")
> Marks<-sample(grades,40,replace=T,prob=c(.2,.3,.25,.15,.1))
> Marks
[1] "A+" "A-" "B+" "A-" "A+" "B"  "A+" "B+" "A-" "B"  "A+" "A-"
[13] "A-" "B+" "A-" "A-" "A-" "A-" "A+" "A-" "A+" "A+" "C"  "C" 
[25] "B"  "C"  "B+" "C"  "B+" "B+" "B+" "A+" "B+" "A-" "A+" "A-"
[37] "A-" "B"  "C"  "A+"
> 

A bar chart of the Marks vector is obtained from

> barplot(table(Marks),main="Mid-Marks in Algorithms")

enter image description here (opens new window)

Notice that, the barplot() function places the factor levels on the x-axis in the lexicographical order of the levels. Using the parameter names.arg, the bars in plot can be placed in the order as stated in the vector, grades.

# plot to the desired horizontal axis labels
> barplot(table(Marks),names.arg=grades ,main="Mid-Marks in Algorithms")

enter image description here (opens new window)

Colored bars can be drawn using the col= parameter.

> barplot(table(Marks),names.arg=grades,col = c("lightblue", 
        "lightcyan", "lavender", "mistyrose",  "cornsilk"),
         main="Mid-Marks in Algorithms")

enter image description here (opens new window)

A bar chart with horizontal bars can be obtained as follows:

> barplot(table(Marks),names.arg=grades,horiz=TRUE,col = c("lightblue",
          "lightcyan", "lavender", "mistyrose",  "cornsilk"),
           main="Mid-Marks in Algorithms")

enter image description here (opens new window)

A bar chart with proportions on the y-axis can be obtained as follows:

> barplot(prop.table(table(Marks)),names.arg=grades,col = c("lightblue",
           "lightcyan", "lavender", "mistyrose",  "cornsilk"),
            main="Mid-Marks in Algorithms")

enter image description here (opens new window)

The sizes of the factor-level names on the x-axis can be increased using cex.names parameter.

> barplot(prop.table(table(Marks)),names.arg=grades,col = c("lightblue",
          "lightcyan", "lavender", "mistyrose",  "cornsilk"),
           main="Mid-Marks in Algorithms",cex.names=2)

enter image description here (opens new window)

The heights parameter of the barplot() could be a matrix. For example it could be matrix, where the columns are the various subjects taken in a course, the rows could be the labels of the grades. Consider the following matrix:

> gradTab
     Algorithms Operating Systems Discrete Math
  A-         13                10             7
  A+         10                 7             2
  B           4                 2            14
  B+          8                19            12
  C           5                 2             5

To draw a stacked bar, simply use the command:

> barplot(gradTab,col = c("lightblue","lightcyan",
       "lavender", "mistyrose",  "cornsilk"),legend.text = grades,
        main="Mid-Marks in Algorithms")

enter image description here (opens new window)

To draw a juxtaposed bars, use the besides parameter, as given under:


> barplot(gradTab,beside = T,col = c("lightblue","lightcyan",
       "lavender", "mistyrose",  "cornsilk"),legend.text = grades,
        main="Mid-Marks in Algorithms")

enter image description here (opens new window)

A horizontal bar chart can be obtained using horiz=T parameter:

> barplot(gradTab,beside = T,horiz=T,col = c("lightblue","lightcyan",
       "lavender", "mistyrose",  "cornsilk"),legend.text = grades,
        cex.names=.75,main="Mid-Marks in Algorithms")

enter image description here (opens new window)