Why does legend command fail after boxplots with hold command?
4 次查看(过去 30 天)
显示 更早的评论
Following the MATLAB legend documentation example , the following code excerpt issues the warning and erroneous image displayed in the screenshot. Why? How do I create a legend?
cm3tomm3 = 10^3;
datatoplot = ExtractLessData(height(data),newvoldata,'blurred','rectum');
figure
boxplot(cm3tomm3*datatoplot.Volumes,datatoplot.DoseInterval,...
'colors','b','BoxStyle','filled')
title('Dosed Rectal Volumes (mm^3) per Dose Interval (Gy(RBE))')
hold on
datatoplot = ExtractLessData(height(data),newvoldata,'planned','rectum');
boxplot(cm3tomm3*datatoplot.Volumes,datatoplot.DoseInterval,...
'colors','r')
hold off
legend('planned: red, outlined', 'blurred: blue, filled')
0 个评论
回答(1 个)
Elizabeth Reese
2017-11-30
Boxplots are groups of lines in the axes, so their legend functionality is limited. Mathworks' teams are aware of this and considering improving this in a future release.
You can still achieve this legend by saving the handles from the boxplots and then manually creating the legend.
For example:
load carsmall
% Make the plot
f = figure;
h1 = boxplot(MPG,Origin,'colors','b','BoxStyle','filled');
set(gca,'XTickLabel',{' '})
hold on
h2 = boxplot(gca,Acceleration,Origin,'colors','r');
hold off
% reset the axes limits to show the full boxplots
ylim([min(min(MPG),min(Acceleration)) max(max(MPG),max(Acceleration))])
legend([h1(2),h2(3)],'one, blue filled','two, red, outlined')
You will need to find which index in h1 and h2 correspond to lines in the box of your plot.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Legend 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!