Jak přizpůsobit popisky bodů v grafech

Nedávno jsem byl upozorněn jedním uživatelem, že popisky bodů v grafu vytvořeném pomocí funkce pcolor působí neintuitivně. Pojďme si nejprve ve stručnosti shrnout, co dělá funkce pcolor a jak se chovají popisky bodů v grafech prostředí MATLAB.

Funkce pcolor vykresluje vstupní matici jako dvourozměrné pole barevných buněk a dá se například použít k vykreslení 3D dat ve dvou rozměrech. Každá barevná buňka odpovídá jednomu prvku vstupní matice, příčemž barvu buňky určuje hodnota odpovídajícího prvku této matice. Pokud by vás zajímalo, jak se na základě hodnoty přiřadí barva, podívejte se do dokumentace funkce colormap.

Při kliknutí na libovolný bod v grafu se v prostředí MATLAB zobrazí popisek tohoto bodu, tzv. Data Tip. Nejčastěji tento popisek obsahuje souřadnice daného bodu, tedy souřadnice X a Y pro 2D grafy a X, Y a Z pro 3D grafy. Na příkladu níže si ukážeme, jak můžete tyto popisky upravit dle svých představ.

Vraťme se nyní k tomu, co považoval uživatel za neintuitivní. V grafu vytvořeném funkcí pcolor obsahují popisky bodů souřadnice X, Y a Z. Uživatel očekával, že u souřadnice Z bude uvedena hodnota na odpovídající pozici matice C, kterou funkci pcolor předal. Místo toho byla v popisku každého bodu zobrazena souřadnice Z s hodnotou 0. Pokusím se dále vysvětlit, proč tomu tak je a jak chování Data Tips upravit, aby naplňovalo uživatelovo očekávání.

image_0.png

Příklad

Pomocí funkce pcolor vytvoříme pseudobarevný 2D graf funkce peaks.

C = peaks;
s = pcolor(C);
figure_0.png

Přidáme barevnou škálu vedle grafu.

colorbar
figure_1.png

Přidáme popisek bodu na libovolně zvolených souřadnicích. Bod můžeme vybrat buď interaktivně kliknutím myši nebo pomocí funkce datatip.

datatip(s,25,40);
figure_2.png

Pokud bychom tento krok přeskočili, následující příkaz by skončil chybou, neboť budeme nastavovat vlastnost DataTipTemplate, která se vztahuje pouze na grafy mající popisky bodů.

V zobrazeném popisku bodu vidíme souřadnice X, Y a Z. Souřadnice Z má ovšem hodnotu 0 pro každý bod grafu. To je způsobeno tím, že funkce pcolor vykresluje graf jako rovnou plochu v rovině x-y. K vykreslení je použit grafický objekt Surface s maticí samých nul ve vlastnosti ZData a data tips defaultně zobrazují hodnoty vlastností XData, YData a ZData příslušného grafického objektu. My chceme, aby při zobrazení popisku byla místo vlastnosti ZData použita vlastnost CData, ve které jsou hodnoty vstupní matice C a která určuje barvy jednotlivých barevných buněk v pseudobarevném grafu. Přizpůsobení popisků bodů nám umožňuje vlastnost DataTipTemplate zobrazeného grafického objektu s popiskem.

s.DataTipTempla­te.DataTipRow­s(3).Value = 'CData' ;

Můžeme podobně upravit i popisek zobrazovaných hodnot.

s.DataTipTempla­te.DataTipRow­s(3).Label = 'Barevná hodnota' ;
figure_3.png

Podrobnosti o tom, jak lze upravovat jednotlivé řádky popisku bodu v grafech naleznete v dokumentaci:

https://www.mathworks.com/…ta-tips.html

Mám zájem vyzkoušet si MATLAB

Jan Studnička (HUMUSOFT), 11.01.2023

close