Having multiple lines in a character array for column labels in a heatmap

3 visualizaciones (últimos 30 días)
Hi all,
I'm trying to make a heatmap chart and for the x axis I have each column labeled. However, the labels are too big and then they become diagonal (which I am not a fan of). I want to divide some of the labels into multiple lines so that the text does not become diagonal. Is there a way to do that?
I currently have the labels in a character array, i.e:
ColumnLabels = {'Long label 1','Long label 2','Long label 3','Long label 4','Long label 5'}
How should I put a new line in between some of the words so that on the heatmap it looks like:
Long
label 1
and so on? Is there a better way to have these labels stored than a character array? Would much appreciate the help! Thank you!
(Also keep in mind I'm asking something different from the x axis title; I have labels within each column for this heatmap. Thanks!)

Respuesta aceptada

dpb
dpb el 22 de Jun. de 2019
Editada: dpb el 22 de Jun. de 2019
Unless TMW has finally fixed it, the TickLabel interpreter is pretty brain dead...you can do something like
ColumnLabels=strrep(ColumnLabels,'Long ',['Long' char(10)]); % insert linefeed character into strings
xticklabels(ColumnLabels)
and you would think joy would ensue! But, alas...the control character gets interpreted as the end of the strings and you end up with the labels being "Long", "label 1', Long", "label 2", "Long" for the five columns -- not at all what desired.
OTOH, you can see that should work with a TeX interpreter; the same modifed label array used something like
text(0.5,0.5,Columnlabels{1})
will indeed show the full label on the two lines as expected.
One of those mind-numbingly weaknesses that's been around like "since forever" and just never gets fixed. :(

Más respuestas (0)

Categorías

Más información sobre Data Distribution Plots en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by