title: R make circle/chord diagram with circlize from dataframe
body: <p>I would like to make a chord diagram using the circlize package . I have a dataframe containing cars with four columns. The 2 first columns contains information on car band and model owned and the next two columns to the brand and model the respondent migrated to.</p>
  
  <p>Here is a simple example of the dataframe:</p>
  
  <pre><code>   Brand_from model_from Brand_to Model_to
  1:      VOLVO        s80      BMW  5series
  2:        BMW    3series      BMW  3series
  3:      VOLVO        s60    VOLVO      s60
  4:      VOLVO        s60    VOLVO      s80
  5:        BMW    3series     AUDI       s4
  6:       AUDI         a4      BMW  3series
  7:       AUDI         a5     AUDI       a5
  </code></pre>
  
  <p>It would be great to be able to make this into a chord diagram. I found an example in the help that worked but I'm not able to convert my data into the right format in order to make the plot.
  This code  is from the help in the circlize package. This produces one layer, I guess I need two, brand and model. </p>
  
  <pre><code>mat = matrix(1:18, 3, 6)
  rownames(mat) = paste0("S", 1:3)
  colnames(mat) = paste0("E", 1:6)
  
  rn = rownames(mat)
  cn = colnames(mat)
  factors = c(rn, cn)
  factors = factor(factors, levels = factors)
  col_sum = apply(mat, 2, sum)
  row_sum = apply(mat, 1, sum)
  xlim = cbind(rep(0, length(factors)), c(row_sum, col_sum))
  
  par(mar = c(1, 1, 1, 1))
  circos.par(cell.padding = c(0, 0, 0, 0))
  circos.initialize(factors = factors, xlim = xlim)
  circos.trackPlotRegion(factors = factors, ylim = c(0, 1), bg.border = NA,
                         bg.col = c("red", "green", "blue", rep("grey", 6)), track.height = 0.05,
                         panel.fun = function(x, y) {
                           sector.name = get.cell.meta.data("sector.index")
                           xlim = get.cell.meta.data("xlim")
                           circos.text(mean(xlim), 1.5, sector.name, adj = c(0.5, 0))
  })
  
  col = c("#FF000020", "#00FF0020", "#0000FF20")
  for(i in seq_len(nrow(mat))) {
    for(j in seq_len(ncol(mat))) {
      circos.link(rn[i], c(sum(mat[i, seq_len(j-1)]), sum(mat[i, seq_len(j)])),
                  cn[j], c(sum(mat[seq_len(i-1), j]), sum(mat[seq_len(i), j])),
                  col = col[i], border = "white")
    }
  }
  circos.clear()
  </code></pre>
  
  <p>This code produces the following plot:</p>
  
  <p><img src="https://i.stack.imgur.com/C5Pld.png" alt="enter image description here"></p>
  
  <p>Ideal result would be like this example, but instead of continents I would like car brand and on the inner circle the car models belonging to the brand
  <img src="https://i.stack.imgur.com/8RBwy.png" alt="enter image description here"></p>