KB2
KB2

Reputation: 121

How to edit the numbers on ggplot y axis

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")

Upvotes: 0

Views: 2433

Answers (1)

B.Mr.W.
B.Mr.W.

Reputation: 19638

(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

Upvotes: 1

Related Questions