0

I am trying to create a nice barplot for my data. So far I have been using the ggplot function:

    library(ggplot2)
    ggplot(dframe1, aes(x=Site, y=lambda.max)) + geom_bar(stat="identity") + 
    labs(x="Site", y="Lambda maximum")

This is so far what I have come up with

The data on the y axis needs to be in the hundreds though (not the thousands), and I do not know how to change that. Also I was wondering if it is possible to represent all of this data on one barplot or graph?:

    structure(list(Site = structure(c(2L, 2L, 2L, 2L, 3L, 3L, 3L, 
    3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 1L, 1L, 1L), .Label = c("6", 
    "2", "3", "4", "5"), class = "factor"), weight = c(0.193, 0.249, 
    0.263, 0.262, 0.419, 0.204, 0.311, 0.481, 0.326, 0.657, 0.347, 
    0.239, 0.416, 0.31, 0.314, 0.277, 0.302, 0.403), cell.count = c(2530000, 
    729000, 336000, 436000, 292000, 0, 2e+05, 6450000, 2e+05, 18700000, 
    7430000, 9920000, 22700000, 21600000, 227000, 169000, 5e+05, 
    283000), eleocyte = c(1270000, 17, 7.3, 264000, 0, 0, 2e+05, 
    0, 2e+05, 2270000, 0, 9920000, 22700000, 442, 153000, 169000, 
    5e+05, 283000), lambda.max = c(459L, 459L, 459L, 459L, 462L, 
    462L, 462L, 462L, 462L, 465L, 465L, 465L, 465L, 490L, 490L, 475L, 
    475L, 475L), avepb.ppm = c(390.2, 373.3, 340.13, 403.2, 248.53, 
    206.7, 238.5, 190.6, 597.2, 206.8, 174.4, 186.3, 138.5, 269.55, 
    58.1, 5.225, 4.02, 6.85), aveworm.pb.ppm = c(9.59, 9.446, 4.193, 
    21.9, 1.66, 7.415, 13.11, 3.01, 51.5, 5.985, 4.705, 26.38, 2.38, 
    4.44, 4.67, 0.11, 0.085, 0.096), aveworm.g = c(0.09125, 0.264, 
    14.699, 0.2425, 0.4793, 0.051, 0.0635, 0.0465, 0.2645, 0.0559, 
    0.0795, 0.05765, 0.0846, 0.457, 0.0625, 0.0535, 0.1576, 0.16)), .Names = c("Site", 
    "weight", "cell.count", "eleocyte", "lambda.max", "avepb.ppm", 
    "aveworm.pb.ppm", "aveworm.g"), row.names = c(NA, -18L), class = "data.frame")
KB2
  • 101
  • 1
  • 1
  • 11
  • What to you want to happen when there are multiple entries per site? (At the moment you are seeing the sum of values which is why they are "in the thousands".) – IRTFM Dec 07 '14 at 18:22
  • I see. Is it possible to show the replicates for each site, each with its associated value? – KB2 Dec 07 '14 at 18:26

1 Answers1

1

(1) How to change the y to be hundred separated

The continuous_y_axis gives you a few options like comma, dollar, percent. I don't think the hundred you want is built in.

However, you can simply divide the y by the unit (100) in this case. And add the unit to your y label.

library(ggplot2)
unit <- 100
ggplot(dframe1, aes(x=Site, y=lambda.max/unit)) + geom_bar(stat="identity") + 
  labs(x="Site", y=paste0("Lambda maximum: Unit: ", unit))

enter image description here

(2) Can I fit all the data into one plot

I don't think it is a good idea to fit all the variables into one plot. Like the dodged bar plot here. Because all the variables are in different scale and if you fit all of them into one plot. Some of them will be unnoticable.

Here is what facet_wrap and reshape can do for you.

library(reshape2)
dframe2 <- melt(dframe1, id="Site")
ggplot(dframe2, aes(x=Site, y=value)) + geom_bar(stat="identity") + facet_wrap(~variable, scales="free")

enter image description here

(3) DONT SUM WITHIN GROUP

In that case, all the records inside each site need to be treated as an individual record, in that case, I created a variable called row for each record, you can improve that part.

dframe1$row <- row.names(dframe1)
library(reshape2)
dframe2 <- melt(dframe1, id=c("Site", "row"))
ggplot(dframe2, aes(x=as.numeric(row), fill=Site, y=value)) + geom_bar(stat="identity") + facet_wrap(~variable, scales="free")

enter image description here

Community
  • 1
  • 1
B.Mr.W.
  • 18,910
  • 35
  • 114
  • 178
  • Thank you very much. However, as @BondedDust pointed out to me, is there a way to show the replicates for each site instead of just the summation for each site? – KB2 Dec 07 '14 at 18:40
  • Sorry I am also having problems running the R script you have suggested. I get this error: Error in packageVersion("plyr") : package ‘plyr’ not found. I have installed this package, as well as reshape 2.. – KB2 Dec 07 '14 at 18:56
  • I have finally managed to reproduce the graph..however, how do you add the different colours? Is a new package needed? Link to picture of graph:http://i.imgur.com/Fc1eLcG.jpg – KB2 Dec 07 '14 at 22:12