Question: Saving graphs separately in folder?
1
gravatar for Wuschel
10 months ago by
Wuschel120
HUJI
Wuschel120 wrote:

Sample data

structure(list(Gene = c("A", "A", "A", "A", "B", "C", "C", "D", "D", "D"), Peptide = c("a1", "a2", "a3", "a4", "b1", "c1", "c2", "d1", "d2", "d3"), Sample1 = c(0.275755732, 0.683048798, 1.244604878, 0.850270313, 0.492175199, 0.269651338, 0.393004954, 0.157966662, 1.681672581, 0.298308801), Sample2 = c(0.408992244, 0.172488244, 1.749247694, 0.358172308, 0.142129982, 0.158636283, 0.243500648, 0.095019037, 0.667928805, 0.572162278), Sample3 = c(0.112265765, 0.377174168, 2.430040623, 0.497873323, 0.141136584, 0.250330266, 0.249783164, 0.107188279, 0.173623439, 0.242298602), Sample4 = c(0.87688073, 0.841826338, 0.831376575, 0.985900966, 0.891632525, 1.016533723, 0.292048735, 0.776351689, 0.800070173, 1.161882923), Sample5 = c(1.034093889, 0.304305772, 0.616445765, 1.000820463, 1.03124071, 0.995897846, 0.289542364, 0.578721727, 0.672592766, 1.168944588), Sample6 = c(1.063124715, 0.623917522, 0.613196611, 0.990921045, 1.014340981, 0.965631141, 0.316793011, 1.02220535, 1.182063616, 1.41196421), Sample7 = c(1.335677026, 0.628621656, 0.411171453, 1.050563412, 1.290233552, 1.1603839, 0.445372411, 1.077192698, 0.726669337, 1.09453338), Sample8 = c(1.139360562, 0.404024829, 0.263714711, 0.899959209, 1.356913804, 1.246338203, 0.426568548, 1.104988267, 0.964924824, 1.083654341), Sample9 = c(1.38146599, 0.582817437, 0.783698738, 1.118948066, 1.010795866, 1.277086848, 0.434025911, 1.238871048, 1.201184368, 1.476478831), Sample10 = c(1.111486801, 0.60513273, 0.460680037, 1.385702246, 1.448873253, 1.364329784, 0.375032044, 1.382750002, 0.741842319, 1.035657705)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"), spec = structure(list( cols = list(Gene = structure(list(), class = c("collector_character", "collector")), Peptide = structure(list(), class = c("collector_character", "collector")), Sample1 = structure(list(), class = c("collector_double", "collector")), Sample2 = structure(list(), class = c("collector_double", "collector")), Sample3 = structure(list(), class = c("collector_double", "collector")), Sample4 = structure(list(), class = c("collector_double", "collector")), Sample5 = structure(list(), class = c("collector_double", "collector")), Sample6 = structure(list(), class = c("collector_double", "collector")), Sample7 = structure(list(), class = c("collector_double", "collector")), Sample8 = structure(list(), class = c("collector_double", "collector")), Sample9 = structure(list(), class = c("collector_double", "collector")), Sample10 = structure(list(), class = c("collector_double", "collector"))), default = structure(list(), class = c("collector_guess", "collector"))), class = "col_spec"))

Scripts

 df %>% gather(k,v, -Gene, -Peptide) %>% split(.$Gene) %>% map(~spread(.,Peptide, v)) %>% map(~select(.,-1:-2)%>% ggpairs(.))

Q1. How can I add protein name to the plots and save these plots separately in a folder?

Q2. How can put peptide comparisons (for each proteins) faceted and save?

R gene • 389 views
ADD COMMENTlink modified 10 months ago • written 10 months ago by Wuschel120

what is the object "v" here in map(~spread(.,Peptide, v))?

ADD REPLYlink modified 10 months ago • written 10 months ago by cpad011211k

thank you cpad0112 for trying to help. sorry it was a mistake, v = value, I'll edit that. Thank you.

ADD REPLYlink written 10 months ago by Wuschel120

map(~select(.,-1:-2) code has error. fixed that. However ggpairs (from GGally) function fails with an error message: Error: ggplot2 doesn't know how to deal with data of class list. If you can let us know what you want to plot as individual files, i think, in first step it self, we can get the required plots.

ADD REPLYlink modified 10 months ago • written 10 months ago by cpad011211k

From this scripts I can get graphs like below;

library(GGally) library(tidyverse) df %>% gather(k,v, -Gene, -Peptide) %>% split(.$Gene) %>% map(~spread(.,Peptide, v)) %>% map(~select(.,-1:-2)%>% ggpairs(.))

Picture1

ADD REPLYlink modified 10 months ago • written 10 months ago by Wuschel120

I want to add protein name in the top of the plot and save these plots in a folder.

Next, I'm wondering if I can be faceted these plots protein vice ( for each protein plot peptide comparison)

ADD REPLYlink written 10 months ago by Wuschel120

@OP: where did you get the "Protein" column? data frame posted in OP, has only "gene" and "peptide". I think the code is adapted from poorly and unnecessarily complex. If you can let us know what you want, we can help you. Instead repairing adapted code is kind of getting out of hand. I already found 2 code errors.

ADD REPLYlink modified 10 months ago • written 10 months ago by cpad011211k

Sorry, cpad0112. I have changed Proteins to Gene numbers in my working df, and have posted wrong scripts mistakenly.

library(GGally) library(tidyverse) df %>% gather(k,v, -Gene, -Peptide) %>% split(.$Gene) %>% map(~spread(.,Peptide, v)) %>% map(~select(.,-1:-2)%>% ggpairs(.))
ADD REPLYlink written 10 months ago by Wuschel120
1

Your second code worked fine.

ADD REPLYlink modified 10 months ago • written 10 months ago by cpad011211k
1

I have changed Proteins to Gene numbers in my working df, and have posted wrong scripts mistakenly.

BIOAWY : Please edit the original post and clean the code up as necessary. Having incorrect information in original post but correct information buried in a thread becomes misleading to someone finding this thread in future via search.

ADD REPLYlink modified 10 months ago • written 10 months ago by genomax66k
3
gravatar for cpad0112
10 months ago by
cpad011211k
India
cpad011211k wrote:

@OP: Q1 and Q2:

For Q1 requirement: try this with code

p=df1 %>% gather(k,v, -Gene, -Peptide) %>% split(.$Gene) %>% map(~spread(.,Peptide, v)) %>% map(~select(.,1:ncol(.))%>%ggpairs(3:ncol(.), title = paste0("Protein: ",unique(.[,1]))))

for png (This would create 4 png files with gene/protein names as file name and each file will have the string "protein" and protein name in the data frame .. Change resolution as per requirement.):

for(i in 1:length(p)){
ggsave(plot = p[[i]], file = paste0(names(p)[i],".png"), dpi = 300)
}

For Q2: There is manual way, you can automate it.

library(cowplot)
plot_grid(
    ggmatrix_gtable(p[[1]]),
    ggmatrix_gtable(p[[2]]),
    ggmatrix_gtable(p[[3]]),
    ggmatrix_gtable(p[[4]]),
    nrow = 2,
    ncol=2
)

Rplot

ADD COMMENTlink modified 10 months ago • written 10 months ago by cpad011211k

Thanks a heap cpad0112. As always I am greatful for your kind help.

ADD REPLYlink written 10 months ago by Wuschel120
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: 1748 users visited in the last hour