Question: Data Visualization In R
1
gravatar for deschisandy
7.4 years ago by
deschisandy60
deschisandy60 wrote:

The data to be visualized is from an experiment (T1-T8 represents different sections of the brain) and is as follows:

    [[Block1]]
              sum
       [T1,]   6
       [T2,]   6
       [T3,]   4
       [T4,]   5
       [T5,]   8
       [T6,]   9
       [T7,]   8
       [T8,]   6

    [[Block2]]
              sum
       [T1,]   3
       [T2,]   3
       [T3,]   4
       [T4,]   5
       [T5,]   4
       [T6,]   2
       [T7,]   1
       [T8,]   5

    [[Block3]]
              sum
       [T1,]   3
       [T2,]   3
       [T3,]   4
       [T4,]   2
       [T5,]   4
       [T6,]   8
       [T7,]   3
       [T8,]   1   

   [[Block4]]
              sum
       [T1,]   6
       [T2,]   5
       [T3,]   4
       [T4,]   3
       [T5,]   9
       [T6,]   8
       [T7,]   2
       [T8,]   6  

   [[Block5]]
              sum
       [T1,]   8
       [T2,]   3
       [T3,]   4
       [T4,]   5
       [T5,]   7
       [T6,]   6
       [T7,]   2
       [T8,]   2 

   [[Block6]]
              sum
       [T1,]   10
       [T2,]   9
       [T3,]   6
       [T4,]   8
       [T5,]   9
       [T6,]   4
       [T7,]   6
       [T8,]   7

and so on.. For more than 100 blocks..

I would like to visualize the data in the following way to see the overall value in each region for very block..

For one block I get a line plot as shown below:

Block 1

But it is tedious to visualize the same for 100 blocks.. What would be the best method to view it as a single plot using R..I tried doing it with heat maps but I would rather visualize them as a graph..

In the end it should be something like ( I have a rough figure of it).. Iam not sure how to do this in R for several blocks in a single plot or some other better way to visualize it: enter image description here

R • 2.9k views
ADD COMMENTlink modified 7.4 years ago by Pavel Senin1.9k • written 7.4 years ago by deschisandy60
1

Edit your question to a better title plus check facet_grid of ggplot!!

ADD REPLYlink written 7.4 years ago by Sukhdeep Singh10k
1

Cross-posted on stackoverflow, where several good answers have been offered. http://stackoverflow.com/questions/17280468/data-visualization-in-r

ADD REPLYlink written 7.4 years ago by bdemarest460
4
gravatar for Giovanni M Dall'Olio
7.4 years ago by
London, UK
Giovanni M Dall'Olio27k wrote:

This is a difficult question, because the answer depends on what you want to show.

The ENCODE researchers faced similar problems, when they had to find a way to visualize expression levels from a lot of tissues. One solution they have found is the ENCODE-RNA-dashboard:

ENCODE RNA Dashboard

This basically is not much different from an heatmap, but it is interactive, so you can click and get more details about a specific tissue.

Another solution, as suggested bu Suhkdeep, is to use faceting. This is a reproducible example of how to use faceting to generate multiple plots:

> library(reshape)
> d = data.frame("B1"=rnorm(8),"B2"=rnorm(8), "B3"=rnorm(8), "B4"=rnorm(8), "B5"=rnorm(8), "B6"=rnorm(8), "B7"=rnorm(8), "B8"=rnorm(8))
> d

          B1           B2          B3         B4          B5         B6
1 -0.6581045 -1.093919442  0.94578457 -0.1805976  0.41888201 -0.7794898
2 -1.1092189 -0.091769948  0.09502878 -1.4822778 -0.04307963 -0.5021063
3  0.8569934 -0.388095230 -1.06364075  0.2441476 -0.23060652 -1.4263023
4 -0.9435040 -0.791272225 -1.20657936  0.6161711  1.18477321 -0.3969317
5  0.1589559 -0.007835382  0.66982203  0.3872096 -0.88920083 -0.2209863
6  1.4952576  0.549350763 -0.61693139 -1.5470285  0.21826829 -0.7205813
7 -1.5454067 -0.785411708  0.48277576 -1.8998326  0.78415025 -0.8832751
8  1.0721951  0.490277322  1.17584947  0.1968467  1.74636297  1.8247020
          B7         B8
1 -1.7490352 -0.3638126
2  1.1485487  0.7564457
3  0.9900087 -1.1589263
4 -1.2926119  1.4203860
5  3.4772243  0.8022015
6  0.5892454  0.3348479
7 -0.4157224  0.6205421
8 -0.6170603  1.5733568

> d$id = row.names(d)
> d.long = melt.data.frame(d, id.var='id')

# facets with ggplot2

> library(ggplot2)
> qplot(as.integer(id), value, facets=~variable, data=d.long, geom='line')

enter image description here

# facets with lattice

> library(lattice)
> xyplot(value~id2|variable, d.long, type=c('l','p'), layout=c(3,3)) # note: with the layout option you can split the plot into multiple page. This is actually not easy to do in ggplot2.

enter image description here

ADD COMMENTlink modified 10 months ago by RamRS30k • written 7.4 years ago by Giovanni M Dall'Olio27k
4
gravatar for Pavel Senin
7.4 years ago by
Pavel Senin1.9k
Los Alamos, NM
Pavel Senin1.9k wrote:

This sort of very simple, yet efficient way to obtain plot similar to yours at once, you will need to add proper breaks and axis labels

require(ggplot2)
require(reshape)

# make data matrix 10x100, step 5 for each next series
data = data.frame(  
  matrix(rnorm(1000)+rep(seq(1,50,5),100), nrow=10, byrow=F))

# numeric variables
colnames(data) = paste(seq(1:100))

# attach series names and do the melt
data = cbind(series=factor(seq(1:10), levels=seq(1:10), 
              labels=paste("series_",seq(1:10),sep="")), data)
dm = melt(data)

# plot
(p = ggplot(dm, aes(x=variable, y=value, group=series, colour=series)) +
   geom_line() + theme_bw() + ggtitle("A rough figure of it...") +
   scale_y_continuous("Blocks",breaks=seq(1,50,5), labels=paste("block_",seq(1:10),sep="")) +
   scale_x_discrete("T-s",breaks=seq(1,100,10), labels=paste("T",seq(1:10),sep="")))

enter image description here

ADD COMMENTlink modified 10 months ago by RamRS30k • written 7.4 years ago by Pavel Senin1.9k

nice idea, you should add a screenshot of the plot to this discussion.

ADD REPLYlink written 7.4 years ago by Giovanni M Dall'Olio27k

Alright. Sample added.

ADD REPLYlink written 7.4 years ago by Pavel Senin1.9k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1687 users visited in the last hour