2016-11-22 2 views
1

Я хотел бы создать график решетки из данных с несколькими факторами и несколькими уровнями для каждого фактора.Ячейки с двумя факторами решетки в R

Для каждого графика в графике решетки я хотел бы, чтобы ось х представляла собой комбинацию обоих факторов, а их уровни и ось y были значениями.

Ниже я вставлял некоторые примеры данных, которые показывают, как я могу создать график решетки для факторов, но не для факторов и их комбинаций уровней. Мне не нужны 3D-сюжеты, и я бы хотел использовать ящики, если это вообще возможно.

library(plyr) 
library(reshape2) 
library(lattice) 

col_t <- c("Factors","Levels",LETTERS[1:10]) 
data1 <- rnorm(1000) 
dm <- matrix(data1, nrow = 100, ncol = 10, byrow = TRUE) 
    df <- data.frame(dm) 

facs <- c(rep("M",25), rep("N",25), rep("O",25), rep("P",25)) 
levs <- c(rep(c("W","x","Y","Z"),25)) 
    df <- cbind(facs,levs,df) 
     colnames(df) <- col_t 

dfm <- melt(df, id.vars=c("Factors", "Levels")) 
    head(dfm) 

# Creates the Lattice plot where the rnorm data is on the y-axis and the A factors are 
# on the x-axis for every Variable in variable  
    All_Graph <- bwplot(value ~ Factors | variable, 
         data=dfm, 
         scales=list(relation="free",x=list(cex=1.1),y=list(cex=1.25)), 
         main= list("All Metric Values", cex=2.5), 
         xlab=list("Treatments", cex=2.5), 
         ylab=list("Metric Value", cex=2.5), 
         do.out = FALSE, 
         col="black", 
         coef=4 
    ) 
    trel_wid <- 960 
    trellis.device(device="png", filename="All Var Plots.png", width= trel_wid, height= trel_wid*1.5) 
    print(All_Graph) 
    dev.off() 

# Now I'd like to create a plot of each level of each factor. Where the x-axis is A*B 
# and the y-axis is the rnorm data 

    All_Graph <- bwplot(value ~ Factors*Levels | variable, 
         data=dfm, 
         scales=list(relation="free",x=list(cex=1.1),y=list(cex=1.25)), 
         main= list("All Metric Values", cex=2.5), 
         xlab=list("Treatments", cex=2.5), 
         ylab=list("Metric Value", cex=2.5), 
         do.out = FALSE, 
         col="black", 
         coef=4 
    ) 
    trel_wid <- 960 
    trellis.device(device="png", filename="All Var+Lev Plots.png", width= trel_wid, height= trel_wid*1.5) 
    print(All_Graph) 
    dev.off() 

Любые предложения были бы огромной помощью!

+0

Почему бы не использовать ggplot2 'facet_grid' функция. Это намного проще. – John

+0

@John Mostly потому, что я не знал, что существовал до сих пор! Я проверю это и посмотрю, делает ли он то, что мне нужно. Вы знаете, почему нужно использовать решетку vs facet_grid? – Nathan

+0

Я использую в основном ggplot2 для большей части моей работы (даже для R Shiny), а не для пользователя с решеткой. Но вот ссылка http://stackoverflow.com/questions/2759556/r-what-are-the-pros-and-cons-of-using-lattice-versus-ggplot2 – John

ответ

1

С помощью Джона я добрался до нижнего. ggplot с facet_wrap - это путь. Его быстро и просто сделать многоуровневые решетчатые графики таким образом.

library(plyr) 
library(reshape2) 
library(lattice) 

col_t <- c("Factors","Levels",LETTERS[1:10]) 
data1 <- rnorm(1000) 
dm <- matrix(data1, nrow = 100, ncol = 10, byrow = TRUE) 
    df <- data.frame(dm) 

facs <- c(rep("M",25), rep("N",25), rep("O",25), rep("P",25)) 
levs <- c(rep(c("W","x","Y","Z"),25)) 
    df <- cbind(facs,levs,df) 
     colnames(df) <- col_t 

dfm <- melt(df, id.vars=c("Factors", "Levels")) 
    head(dfm) 


    sp <- ggplot(dfm, aes(x=Factors, y=value, fill=Levels)) + 
      geom_boxplot(coef=4, outlier.shape = NA, position = "dodge", alpha = 1, 
        lwd = 1, fatten = 0.75) 

    sp + facet_wrap(~variable, ncol=3, scales="free") 
1

Используя решетку, вы можете попробовать это:

All_Graph <- bwplot(value ~ Factors : Levels | variable,  # use interaction 
        data=dfm, 
        scales=list(relation="free",x=list(cex=1.1),y=list(cex=1.25)), 
        main= list("All Metric Values", cex=2.5), 
        xlab=list("Treatments", cex=2.5), 
        ylab=list("Metric Value", cex=2.5), 
        do.out = FALSE, 
        col="black", 
        coef=4 
) 
trel_wid <- 1500 
trellis.device(device="png", filename="All Var+Lev Plots.png", width= trel_wid, height= trel_wid*1.5) 
print(All_Graph) 
dev.off() 

с выходом enter image description here