text: user8904: So right now my observations in the dataset I've processed is stored as sample identifier columns and gene rows: an example of this would be for sample 1 and gene TRIM21 the observation is Missense Mutation;Frame Shift Deletion. I'm having issues separating the two alterations and instead of being able to show the gene in the sample having 2 different alterations, I end up having to generate a new colour classification (being that the gene in the specific sample exhibits specifically both a missense mutation and a frame shift deletion instead of being able to represent the observation with just colours and missense and frame shift deletion colours alone). Here is an a screenshot of what my matrix looks like: 
  As an example here is some test code generating the test plot:
  library(ComplexHeatmap)
  
  test_labels <- c("Missense_Mutation", "Splice_Site", "Frame_Shift_Del",
                   "Splice_Region","Missense_Mutation;Splice_Site", "Splice_Site;Frame_Shift_Del", 
                   "Splice_Site;Missense_Mutation", "Frame_Shift_Del;Splice_Site")
                             
  
  plot <- Heatmap(test, row_names_side = "left",
          row_names_gp = gpar(cex = 0.7), 
          column_names_gp = gpar(cex = 0.7), 
          heatmap_legend_param = list(title = "Alterations", 
                                      at = test_labels, labels = test_labels), show_heatmap_legend = TRUE)
  
  plot
  
  I've attached a screenshot of my actual plot and as you will be able to see, this ends up creating multiple different classifications: 
  
  user3541: What is fed into ComplexHeatmap is what it outputs! So if one of your genes has a Missense_Mutation as well as a Frame_Shift_Del and you would like to plot its value, of course you will have a category and color that is different than those of Missense_Mutation or Frame_Shift_Del, that is only natural.
  What you can do is to create additional variables like your_gene_Missense_Mutation or your_gene_Frame_Shift_Del each with 0 or 1 to indicate if a particular mutation type is present or not for a particular gene (you can think of it like one-hot-encoding). With a lot of different levels, the resulting heatmap could be difficult to interpret though.
  Another simpler alternative would be a using a "universal label" if your gene has multiple mutations. Basically if the cell contains a ;, its value will be changed to something like mixed_mutation_status and instead of multiple "mutation_type_1; mutation_type_2; ... like categories, you will just have one mixed_mutation_status on top of Missense_Mutation, Frame_Shift_Del, ...
  
original_text: 8904: <p>So right now my observations in the dataset I've processed is stored as sample identifier columns and gene rows: an example of this would be for sample 1 and gene TRIM21 the observation is Missense Mutation;Frame Shift Deletion. I'm having issues separating the two alterations and instead of being able to show the gene in the sample having 2 different alterations, I end up having to generate a new colour classification (being that the gene in the specific sample exhibits specifically both a missense mutation and a frame shift deletion instead of being able to represent the observation with just colours and missense and frame shift deletion colours alone). Here is an a screenshot of what my matrix looks like: <a href="https://i.stack.imgur.com/i6i1H.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/i6i1H.png" alt="enter image description here" /></a></p>
  <p>As an example here is some test code generating the test plot:</p>
  <pre><code>library(ComplexHeatmap)
  
  test_labels &lt;- c(&quot;Missense_Mutation&quot;, &quot;Splice_Site&quot;, &quot;Frame_Shift_Del&quot;,
                   &quot;Splice_Region&quot;,&quot;Missense_Mutation;Splice_Site&quot;, &quot;Splice_Site;Frame_Shift_Del&quot;, 
                   &quot;Splice_Site;Missense_Mutation&quot;, &quot;Frame_Shift_Del;Splice_Site&quot;)
                             
  
  plot &lt;- Heatmap(test, row_names_side = &quot;left&quot;,
          row_names_gp = gpar(cex = 0.7), 
          column_names_gp = gpar(cex = 0.7), 
          heatmap_legend_param = list(title = &quot;Alterations&quot;, 
                                      at = test_labels, labels = test_labels), show_heatmap_legend = TRUE)
  
  plot
  </code></pre>
  <p>I've attached a screenshot of my actual plot and as you will be able to see, this ends up creating multiple different classifications: <a href="https://i.stack.imgur.com/Zr5QE.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Zr5QE.png" alt="enter image description here" /></a></p>
   3541: <p>What is fed into <code>ComplexHeatmap</code> is what it outputs! So if one of your genes has a <code>Missense_Mutation</code> as well as a <code>Frame_Shift_Del</code> and you would like to plot its value, of course you will have a category and color that is different than those of <code>Missense_Mutation</code> or <code>Frame_Shift_Del</code>, that is only natural.</p>
  <p>What you can do is to create additional variables like <code>your_gene_Missense_Mutation</code> or <code>your_gene_Frame_Shift_Del</code> each with 0 or 1 to indicate if a particular mutation type is present or not for a particular gene (you can think of it like one-hot-encoding). With a lot of different levels, the resulting heatmap could be difficult to interpret though.</p>
  <p>Another simpler alternative would be a using a &quot;universal label&quot; if your gene has multiple mutations. Basically if the cell contains a <code>;</code>, its value will be changed to something like <code>mixed_mutation_status</code> and instead of <code>multiple &quot;mutation_type_1; mutation_type_2; ...</code> like categories, you will just have one <code>mixed_mutation_status</code> on top of <code>Missense_Mutation</code>, <code>Frame_Shift_Del</code>, ...</p>
  