[R] Creating rectangular plots with x and y coordinates and treatments from a matrix for a randomized block design

Laz lmramba at ufl.edu
Sun Sep 22 21:52:10 CEST 2013


Thanks Jim,
What you have done is very good.
I was wondering if we could draw some horizontal and vertical lines to 
separate the blocks. Is it possible using R?
Regards,
Laz

On 9/22/2013 11:10 AM, jim holtman wrote:
> Is this what you were after:
>
>
>> ## A function to generate a RCB design
>>
>> rcbd<-function(b,g,rb,cb,r,c)
> + {
> +    # b =number of blocks
> +    # g = a vector of treatments
> +    # rb = number of rows per blocks
> +    # cb =number of columns per block
> +    # r = total rows
> +    # c = total columns
> + library(foreach)
> + genotypes<-times(b) %do% sample(g,length(g))
> + block<-rep(1:b,each=length(g))
> + genotypes<-factor(genotypes)
> + block<-factor(block)
> + ### generate the base design
> + k<-c/cb # number of blocks on the x-axis
> + x<-rep(rep(1:r,each=cb),k)  # X-coordinate
> + l<-cb
> + p<-r/rb
> + m<-l+1
> + d<-l*b/p
> + y<-c(rep(1:l,r),rep(m:d,r)) # Y-coordinate
> + data.frame(x,y,block,genotypes)
> + }
>> set.seed(100)
>> ans <- rcbd(b=4,g=1:4,rb=2,cb=2,r=4,c=4)
>>
>> result <- matrix(nrow = max(ans$x), ncol = max(ans$y))
>> result[cbind(ans$y, ans$x)] <- ans$genotypes
>> result
>       [,1] [,2] [,3] [,4]
> [1,]    2    4    2    3
> [2,]    1    3    4    1
> [3,]    3    2    2    3
> [4,]    1    4    4    1
> Jim Holtman
> Data Munger Guru
>
> What is the problem that you are trying to solve?
> Tell me what you want to do, not how you want to do it.
>
>
> On Sun, Sep 22, 2013 at 1:07 AM, Laz <lmramba at ufl.edu> wrote:
>> Dear R users,
>>
>> I have a function I created to generate randomized block designs given
>> below. Once  I generate the design, I would like to plot it in a
>> rectangular form to mimic the excel style where the blocks are
>> represented with the treatment values placed exactly where their
>> appropriate X and Y coordinates are.
>>
>> ## A function to generate a RCB design
>>
>> rcbd<-function(b,g,rb,cb,r,c)
>> {
>>     # b =number of blocks
>>     # g = a vector of treatments
>>     # rb = number of rows per blocks
>>     # cb =number of columns per block
>>     # r = total rows
>>     # c = total columns
>> library(foreach)
>> genotypes<-times(b) %do% sample(g,length(g))
>> block<-rep(1:b,each=length(g))
>> genotypes<-factor(genotypes)
>> block<-factor(block)
>> ### generate the base design
>> k<-c/cb # number of blocks on the x-axis
>> x<-rep(rep(1:r,each=cb),k)  # X-coordinate
>> l<-cb
>> p<-r/rb
>> m<-l+1
>> d<-l*b/p
>> y<-c(rep(1:l,r),rep(m:d,r)) # Y-coordinate
>> data.frame(x,y,block,genotypes)
>> }
>> set.seed(100)
>> rcbd(b=4,g=1:4,rb=2,cb=2,r=4,c=4)
>>
>>      x y block genotypes
>> 1  1 1     1         2
>> 2  1 2     1         1
>> 3  2 1     1         4
>> 4  2 2     1         3
>> 5  3 1     2         2
>> 6  3 2     2         4
>> 7  4 1     2         3
>> 8  4 2     2         1
>> 9  1 3     3         3
>> 10 1 4     3         1
>> 11 2 3     3         2
>> 12 2 4     3         4
>> 13 3 3     4         2
>> 14 3 4     4         4
>> 15 4 3     4         3
>> 16 4 4     4         1
>>
>> How can I produce a diagram like this one below or a better one for any run of my function?
>>
>>
>> 2       4       2       3
>> 1       3       4       1
>> 3       2       2       3
>> 1       4       4       1
>>
>>
>> Regards,
>> Laz
>>
>>
>>
>>          [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list