---
url: https://chartbuddy.io/embed/docs/concepts/orientation.md
---
# Orientation

```js
{
  orientation: 'vertical',   // default
  // orientation: 'horizontal',
}
```

Orientation controls which physical sides carry the **domain** (categories) vs **range** (values) axes. ChartBuddy remaps axis roles automatically when orientation changes, so you keep the same `seriesData` and only flip `orientation`.

| Orientation | Domain (categories) | Primary range (values) |
|---|---|---|
| `vertical` | bottom | left |
| `horizontal` | left | bottom |

## Horizontal clustered bar

```js
{
  chartType: 'clusteredBar',
  orientation: 'horizontal',
  isDataTransposed: true,
  seriesData: [/* … */],
  title: { visible: true, text: 'Sources' },
  subtitle: { visible: false, text: '' },
  legend: { visible: false },
}
```

Give horizontal bars enough **height**: category labels sit on the left and need vertical room. Format value ticks on **`axes.bottom`** (primary range), not `left`.

More detail: [Axes · Orientation & roles](/axes/orientation) · [Value axis](/axes/value-axis) · [Secondary (top)](/axes/secondary#horizontal-dual-axis-secondary-on-top).
