Marcos Patrício
Marcos Patrício

Reputation: 69

How to make a histogram from a matrix in R

I`m having trouble constructing an histogram from a matrix in R The matrix contains 3 treatments(lamda0.001, lambda0.002, lambda0.005 for 4 populations rec1, rec2, rec3, con1). The matrix is:

     lambda0.001 lambda0.002 lambda.003
rec1   1.0881688   1.1890554  1.3653264
rec2   1.0119031   1.0687678  1.1751051
rec3   0.9540271   0.9540271  0.9540271
con1   0.8053506   0.8086985  0.8272758

my goal is to plot a histogram with lambda in the Y axis and four groups of three treatments in X axis. Those four groups should be separated by a small break from eache other. I need help, it doesn`t matter if in ggplot2 ou just regular plot (R basic). Thanks a lot!

Upvotes: 0

Views: 7385

Answers (1)

Smudgerville
Smudgerville

Reputation: 26

Agree with docendo discimus that maybe a barplot is what you're looking for. Based on what you're asking though I would reshape your data to make it a little easier to work with first and you can still get it done with stat = "identity"

sapply(c("dplyr", "ggplot2"), require, character.only = T)

#  convert from matrix to data frame and preserve row names as column
b <- data.frame(population = row.names(b), as.data.frame(b), row.names = NULL)

# gather so in a tidy format for ease of use in ggplot2
b <- gather(as.data.frame(b), lambda, value, -1)

# plot 1 as described in question
ggplot(b, aes(x = population, y = value)) + geom_histogram(aes(fill = lambda), stat = "identity", position = "dodge")        

# plot 2 using facets to separate as an alternative
ggplot(b, aes(x = population, y = value)) + geom_histogram(stat = "identity") + facet_grid(. ~ lambda)

Upvotes: 1

Related Questions