Is there a way to customize what observations are plotted in ComplexHeatmap? 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 &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

I've attached a screenshot of my actual plot and as you will be able to see, this ends up creating multiple different classifications:
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 &quot;universal label&quot; 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 &quot;mutation_type_1; mutation_type_2; ... like categories, you will just have one mixed_mutation_status on top of Missense_Mutation, Frame_Shift_Del, ...