#
Horizontal Bar
in
MATLAB^{®}

How to make Horizontal Bar plots in MATLAB^{®} with Plotly.

## Display One Series of Bars

Create a vector of four values. Display the values in a bar graph with one horizontal bar for each value.

```
y = [10 20 30 41];
barh(y)
fig2plotly(gcf);
```

## Display Four Series of Bars with Axis Labels and Legend

Define `x`

as a matrix of three year values. Define `y`

as a matrix containing snowfall data for four cities. Display the four series of bars in groups for each year. Then add the axis labels and a legend.

```
x = [1980 1990 2000];
y = [40 50 63 52; 42 55 50 48; 30 20 44 40];
barh(x,y)
xlabel('Snowfall')
ylabel('Year')
legend({'Springfield','Fairview','Bristol','Jamesville'})
fig2plotly(gcf);
```

## Change Baseline Value

Create matrix `y`

. Then display the values of `y`

in a bar graph with a baseline value of `25`

. Values that are less than `25`

display on the left side of the baseline.

```
y = [8 15 33; 30 35 40; 50 55 62];
barh(y,'BaseValue',25)
fig2plotly(gcf);
```

## Display Stacked Bars with Negative Data

Define `x`

as a vector of three year values. Define `y`

as a matrix that contains a combination of negative and positive values. Display the values in a stacked horizontal bar graph.

```
x = [1980 1990 2000];
y = [15 20 -5; 10 -17 21; -10 5 15];
barh(x,y,'stacked')
fig2plotly(gcf);
```

## Customize Vertical Axis Tick Labels

Define `y`

as a vector of four values, and display the values in a horizontal bar graph. Then call the `yticklabels`

function to change the tick labels on the vertical axis.

```
y = [10 20 30 41];
barh(y)
yticklabels({'April','May','June','July'})
fig2plotly(gcf);
```

## Specify Categorical Data

One way to indicate categories for your bars is to specify `X`

as a categorical array. The `barh`

function uses a sorted list of the categories, so the bars might display in a different order than you expect. To preserve the order, call the `reordercats`

function.

Define `X`

as categorical array, and call the `reordercats`

function to specify the order for the bars. Then define `Y`

as a vector of bar lengths and display the bar graph.

```
X = categorical({'Small','Medium','Large','Extra Large'});
X = reordercats(X,{'Small','Medium','Large','Extra Large'});
Y = [10 21 33 52];
barh(X,Y)
fig2plotly(gcf);
```

## Add Labels to the Ends of Bars

Define `vals`

as a matrix containing two series of data. Display the data in a horizontal bar graph and specify an output argument. Since there are two series, `barh`

returns a vector of two `Bar`

objects.

```
x = [1 2 3];
vals = [2 3 6; 11 23 26];
b = barh(x,vals);
fig2plotly(gcf);
```

Display the values as labels at the tips of the first series of bars. To do this, get the coordinates of the tips of the bars by getting the `XEndPoints`

and `YEndPoints`

properties of the first `Bar`

object. Since horizontal bar graphs have rotated axes, you must switch the values of `XEndPoints`

and `YEndPoints`

before passing them to the `text`

function. Add a padding value of `0.3`

to `YEndpoints`

so that the text does not touch the edges of the bars. Then call the `text`

function to display the labels.

```
x = [1 2 3];
vals = [2 3 6; 11 23 26];
b = barh(x,vals);
xtips1 = b(1).YEndPoints + 0.3;
ytips1 = b(1).XEndPoints;
labels1 = string(b(1).YData);
text(xtips1,ytips1,labels1,'VerticalAlignment','middle')
fig2plotly(gcf);
```

Next, follow the same steps to display the labels at the tips of the second series of bars.

```
x = [1 2 3];
vals = [2 3 6; 11 23 26];
b = barh(x,vals);
xtips1 = b(1).YEndPoints + 0.3;
ytips1 = b(1).XEndPoints;
labels1 = string(b(1).YData);
text(xtips1,ytips1,labels1,'VerticalAlignment','middle')
xtips2 = b(2).YEndPoints + 0.3;
ytips2 = b(2).XEndPoints;
labels2 = string(b(2).YData);
text(xtips2,ytips2,labels2,'VerticalAlignment','middle')
fig2plotly(gcf);
```

## Specify Bar Thickness and Color

Create and display data in a horizontal bar graph that has red bars with a thickness of `0.4`

.

```
y = [10 22 30 42];
width = 0.4;
barh(y,width,'red');
fig2plotly(gcf);
```

## Customize One Series of Bars

Create matrix `y`

in which each column is a series of data. Then display the data in a bar graph, specifying an output argument when calling the `barh`

function. In this case, `barh`

returns a vector of three `Bar`

objects. Each object corresponds to a different series.

```
y = [10 15 20; 30 35 40; 50 55 62];
b = barh(y);
fig2plotly(gcf);
```

Modify the second series of bars to be green with thick red edges.

```
y = [10 15 20; 30 35 40; 50 55 62];
b = barh(y);
b(2).FaceColor = [.2 .6 .5];
b(2).EdgeColor = [.63 .08 .18];
b(2).LineWidth = 2;
fig2plotly(gcf);
```

## Compare Different Bar Styles

Create and display data in two different bar graphs using the default `'grouped'`

style and the `'stacked'`

style.

```
x = [1980 1990 2000];
y = [8 15 25; 30 35 40; 50 55 62];
% Grouped
tiledlayout(2,1);
ax1 = nexttile;
barh(ax1,x,y)
title('Grouped Style')
% Stacked
ax2 = nexttile;
barh(ax2,x,y,'stacked')
title('Stacked Style')
fig2plotly(gcf);
```