A multitrait-multimethod matrix and data set I am working my way through Multitrait-Multimethod Matrix in a psychometrics class.  We're only required to be able to analyze them but I'd really like to be able to construct them.  I think I am able to do that (basically it's a rearangement of the correlation matrix with coefficient alpha for the diagonals).  I am pretty sure I got it but want a data set and a finished MTMM example (something that looks like the format below):
That way i can work my way through and make sure my final product looks like it's supposed to.  I've attempted for a number of hours to find something but am frustrated and hoping someone has such a resource.  I use R so i don't care what format the data set is in.  
Thank you in advance for your help.
 A: I built on @Andy W's R-code and hope my changes are useful to someone else. 
I mainly changed it, so that it 


*

*obeys the new syntax (no more opts) in ggplot2, so no more warnings

*adds the correlations as text

*now correlation text size reflects its effect size

*colour scheme shows the type of correlation (hetero/mono-trait/method).

*put the legend in the empty upper right triangle


The function also contains my way for creating the data in the right format from a dataframe or correlation table. This depends on having your trait and method encoded in the variable name and you'd probably want to extract CFA loadings for a more solid look at the matter. In my case I first wanted to eyeball the correlations with a bit more visual structure. If you have your correlations/loadings in long format already it should be easy to adapt the function or to cast the long to wide.
Edit:
I put this in a package on Github. You can get it using devtools::install_github("rubenarslan/formr"), the  function is then formr:mtmm.

## function for rendering a multi trait multi method matrix
mtmm = function (
    variables, # data frame of variables that are supposed to be correlated
    reliabilities = NULL, # reliabilties: column 1: scale, column 2: rel. coefficient
    split_regex = "\\.", # regular expression to separate construct and method from the variable name. the first two matched groups are chosen
    cors = NULL
) {
    library(stringr); library(Hmisc);   library(reshape2); library(ggplot2)

    if(is.null(cors)) 
        cors = cor(variables, use="pairwise.complete.obs") # select variables

    var.names = colnames(cors)

    corm = melt(cors)
    corm = corm[ corm[,'Var1']!=corm[,'Var2'] , ] # substitute the 1s with the scale reliabilities here
    if(!is.null(reliabilities)) {
        rel = reliabilities
        names(rel) = c('Var1','value')
        rel$Var2 = rel$Var1
        rel = rel[which(rel$Var1 %in% var.names), c('Var1','Var2','value')]
        corm = rbind(corm,rel)
    }

    if(any(is.na(str_split_fixed(corm$Var1,split_regex,n = 2)))) 
 {
  print(unique(str_split_fixed(corm$Var1,split_regex,n = 2)))
  stop ("regex broken")
 }
 corm[, c('trait_X','method_X')] = str_split_fixed(corm$Var1,split_regex,n = 2)  # regex matching our column naming schema to extract trait and method
    corm[, c('trait_Y','method_Y')] = str_split_fixed(corm$Var2,split_regex,n = 2)

    corm[,c('var1.s','var2.s')] <- t(apply(corm[,c('Var1','Var2')], 1, sort)) # sort pairs to find dupes
    corm[which(
        corm[ ,'trait_X']==corm[,'trait_Y'] 
        & corm[,'method_X']!=corm[,'method_Y']),'type'] = 'monotrait-heteromethod (validity)'
    corm[which(
        corm[ ,'trait_X']!=corm[,'trait_Y'] 
        & corm[,'method_X']==corm[,'method_Y']), 'type'] = 'heterotrait-monomethod'
    corm[which(
        corm[ ,'trait_X']!=corm[,'trait_Y'] 
        & corm[,'method_X']!=corm[,'method_Y']), 'type'] = 'heterotrait-heteromethod'
    corm[which( 
        corm[, 'trait_X']==corm[,'trait_Y'] 
        & corm[,'method_X']==corm[,'method_Y']), 'type'] = 'monotrait-monomethod (reliability)'

    corm$trait_X = factor(corm$trait_X)
    corm$trait_Y = factor(corm$trait_Y,levels=rev(levels(corm$trait_X)))
 corm$method_X = factor(corm$method_X)
 corm$method_Y = factor(corm$method_Y,levels=levels(corm$method_X))
    corm = corm[order(corm$method_X,corm$trait_X),]
    corm = corm[!duplicated(corm[,c('var1.s','var2.s')]), ] # remove dupe pairs

    #building ggplot
    mtmm_plot <- ggplot(data= corm) + # the melted correlation matrix
        geom_tile(aes(x = trait_X, y = trait_Y, fill = type)) + 
        geom_text(aes(x = trait_X, y = trait_Y, label = str_replace(round(value,2),"0\\.", ".") ,size=log(value^2))) + # the correlation text
        facet_grid(method_Y ~ method_X) + 
        ylab("")+ xlab("")+
        theme_bw(base_size = 18) + 
        theme(panel.background = element_rect(colour = NA), 
                    panel.grid.minor = element_blank(), 
                    axis.line = element_line(), 
                    strip.background = element_blank(),
                    panel.grid = element_blank(),
                    legend.position = c(1,1),
                    legend.justification = c(1, 1)
        ) + 
        scale_fill_brewer('Type') +
        scale_size("Absolute size",guide=F) +
        scale_colour_gradient(guide=F)

    mtmm_plot
}

data.mtmm = data.frame(
    'Ach.self report' = rnorm(200),'Pow.self report'= rnorm(200),'Aff.self report'= rnorm(200),
    'Ach.peer report' = rnorm(200),'Pow.peer report'= rnorm(200),'Aff.peer report'= rnorm(200),
    'Ach.diary' = rnorm(200),'Pow.diary'= rnorm(200),'Aff.diary'= rnorm(200))
reliabilities = data.frame(scale = names(data.mtmm), rel = runif(length(names(data.mtmm))))
mtmm(data.mtmm, reliabilities = reliabilities)

A: It looks like I forgot to link to the original resource I used to construct this picture, that was used as an illustration for an old course (I tend to prefer B&W pictures :-). I know nothing about the data, and that was not of primary interest at the time I used it (it was done with Omnigraffle for Mac). 
If the question is about how to reach such figures, you can try to generate correlation matrices on your own, using the excellent psych package. (Be sure to check William Revelle's website.) However, for well-established data you could probably refer to

Brown, TA (2006). Confirmatory Factor Analysis for Applied
  Research. The Guilford Press.

See data for Table 6.1. Some context (pp. 214-216):

In this illustration, the researcher whishes to examine the construct
  validity of the DSM-IV Cluster A personality disorders, which are
  enduring patterns of symptoms characterized by odd or eccentric
  behaviors (American Psychiatric Association, 1994). Cluster A is
  comprised of three personality disorder constructs: (1) paranoid (an
  enduring pattern of distrust and suspicion such that others' motives
  are interpreted as malevolent); (2) schizoid (an enduring pattern of
  detachment from social relationships and restricted range of emotional
  expression); and (3) schizotypal (an enduring pattern of acute
  discomfort in social relationships, cognitive and perceptual
  distortions, and behavioral eccentricities). In a sample of 500
  patients, each of these three traits is measured by three assessment
  methods: (1) a self-report inventory of personality disorders; (2)
  dimensional ratings from a structured clinical interview of
  personality disorders; and (3) observational ratings made by
  paraprofessional staff. Thus, Table 6.1 is a 3 (T) x 3 (M) matrix,
  arranged such that the correlations among the different traits
  (personality disorders: paranoid, schizotypal, schizoid) are nested
  within each method (assessment type: inventory, clinical interview,
  observer ratings).

The result should look like this:

If you are using R, you might be interested in looking into the mtmm() function from the psy package (which can be used to assess convergent and discriminant validity within a single measurement instrument as well), as already mentioned in earlier replies of mine: How to compute correlation between/within groups of variables?, Which package to use for convergent and discriminant validity in R?
