Setting DisplayName for a bar graph

17 次查看(过去 30 天)
When using the plot() command, one can set the DisplayName property of the plotted lines, and display them in the legend, like so:
hp=plot(1:10,[1:10;2:11]','DisplayName',{'line 1','line 2'});
legend(hp)
This approach does not work for a bar graph:
hb=bar(1:10,[1:10;2:11]','DisplayName',{'line 1','line 2'}); % Error!
legend(hb)
I know I can "get" the DisplayName property of the bars, like so:
hb=bar(1:10,[1:10;2:11]');
get(hb,'DisplayName')
But is there a way to set the DisplayName property in a vectorized way?
I tried
set(hb,'DisplayName',{'bar 1','bar 2'})
but the syntax requires a string input there, and balks at the cell array.

采纳的回答

Patrick Kalita
Patrick Kalita 2012-1-5
The help for set says:
set(H,pn,MxN_pv) sets n property values on each of m graphics objects, where m = length(H) and n is equal to the number of property names contained in the cell array pn. This allows you to set a given group of properties to different values on each object.
In this case the length of H is 2 and we're setting 1 property. Therefore the cell array of property names pn will be 1-by-1 and the cell array of property values pv will be 2-by-1:
hb=bar(1:10,[1:10;2:11]');
set( hb, {'DisplayName'}, {'foo'; 'bar'} );
legend show

更多回答(1 个)

Thalia Nikolaidou
Thalia Nikolaidou 2017-11-10
figure1 = figure; axes1 = axes('Parent',figure1); hold(axes1,'on'); bar1 = bar(data_here); set(axes1,'XTickLabel',data_cell_array_labels_here);
It needs to set the "axes" not the gcs or the DisplayName!!

类别

Help CenterFile Exchange 中查找有关 Discrete Data Plots 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by