barh : datatips erronés

Une fois de plus , j’ai remonté ce bug au support technique de TMW. A ce sujet , il ne faut pas hésiter à remonter tous vos bugs, si vous voulez améliorer le produit.
Pour les contacter rien de plus simple : tapez la commande :

>>support

(voir mon post sur la fonction support à ce sujet)

et cliquez sur Contact Support

Contact Support MATLAB

Beh oui si personne ne contacte le support technique, les bugs traineront de release en release et ne seront jamais corrigés.

Donc le bug que veux vous présenter aujourd’hui concerne la commande barh.
barh est une fonction permettant de faire des barres Horizontales en 2D d’où le h ajouté à la fonction bar.
Vu que bar et barh ont les mêmes propriétés , la doc de ces 2 fonctions est contenue dans la même page : bar, barh

Une fois n’est pas coutume, quelques lignes de code suffisent pour reproduire facilement le problème:

>>x = [-400;-450; 300; -650;200];
>>y =[ 1 0.5 0.8 0.7 1.2];
>>barh(x,y)

Maintenant regardons les valeurs des barres en utilisant le Data Cursor mode.
La doc à ce sujet pour ceux qui ne connaissent pas cet outil : Data Cursor — Displaying Data Values Interactively

Voilà les résultats que j’obtiens:

barh bug

Les datatips sont complétement faux !!!
Par exemple la barre horizontale en Y = -650 affiche X = 1 et Y = -400 … WOW!

En tant que MATLAB Geek , je me suis dit qui dit Datatip , dit text Update Function ou UpdateFcn. On peut trouver un exemple dans la doc de datacursormode.

Bref donc je me suis tout bêtement, le bug vient de là . Donc petit clic-droit et je sélectionne Edit text Update Function

Edit text Update Function.

Donc ça m’ouvre la fonction « myfunction » par défaut de MATLAB :

Text Update Function

Je la sauve avec le nom myupdatefcn.m et je me rajoute ces lignes de code à mon code:

>>dcm_obj = datacursormode(gcf);
>>set(dcm_obj,'UpdateFcn',@myupdatefcn)

là je me dis , je vais reproduire le bug sauf qu’en me mettant en mode debug , c’est à dire en mettant un point d’arrêt dans la fonction myupdatefcn , je vais trouver l’origine du problème…
et là c’est l’hallu , ça marche sans rien toucher !!!

barh solved

Donc pour résumer, juste en forçant MATLAB à utiliser sa fonction UpdateFCn par défaut , ça corrige le problème.

Donc comme je le disais plus haut, j’ai remonté ce bug au support TMW. Ils m’ont remercié pour le workaround que j’ai trouvé et m’en ont proposé un autre qui fonctionne bien également.
Au lieu d’utiliser l’UpdateFcn , c’est de faire un tri des valeurs x et y :

>>[X,IX] = sort(x);
>>barh(X',y(IX)')

Sympa ce petit bug sur barh?!! Vivement la sortie de la 11a pour voir si c’est corrigé!!

EDIT du 17 novembre: il y a maintenant un bug report adressant cette issue:
Data Cursor text for bar charts with unsorted X data can be incorrect

Laisser un commentaire