All articles

KajoData / Tableau

Tableau dual axis: two measures and an honest scale

Build a dual-axis view, separate units from numeric scale, and decide when Synchronize Axis produces a meaningful comparison.

Kajo RudzińskiPublished Updated 11 min read

Two measuring rails stand above a shared platform of bars and a glowing path

You want to show sales and shipping cost as a share of sales in one chart. One measure is an amount in the thousands; the other is a percentage. Tableau lets you layer them with Dual Axis. The click itself is straightforward. I spend more time deciding whether the reader will take the right meaning from the result.

Two axes can help people follow changes over time, but they also provide considerable freedom over the picture. Adjust one range and the series can look closely aligned or widely separated. I will therefore cover units, aggregation and labels alongside the construction steps. Otherwise, a polished dashboard can merely give an accidental relationship a convincing presentation.

These instructions concern Tableau Desktop and follow the current official documentation. The example uses a small synthetic dataset. You do not need an old workbook or access to company sales. Start with three records whose values you can explain, then apply the approach to a larger source once the decisions are clear.

What dual axis actually means

Tableau’s documentation describes two independent axes layered in one pane. Here, a month supplies the horizontal reference and the two vertical scales describe different measures. The term is more specific than observing that an ordinary chart already has horizontal and vertical axes.

Each measure retains its own scale. This allows an amount and a percentage to occupy the same plotting area without changing their units. A point at the same height in both series does not mean that sales equal shipping share. The same screen position can refer to two entirely different values.

Be careful with phrases such as “compare trends,” too. Direction is visible, but the apparent slope depends on scale and chart proportions. Before describing a strong relationship, inspect the numbers, time coverage and context. Three points in a chart provide a very limited basis for a story about an entire business process.

Prepare three months of data

Use the columns Month, Sales and ShippingCost. One row represents one month. Enter the first date of each month and check that Tableau recognizes the column as a date after connecting the file. Keep numeric measures numeric rather than adding unit names inside their cells.

Month Sales ShippingCost
2026-01-01 1000 100
2026-02-01 2000 300
2026-03-01 1500 150

The amounts use a single unspecified unit. Shipping shares are 10%, 15% and 10%. I deliberately avoid supplying a precomputed percentage column, because defining that measure at the view’s aggregation level is part of the exercise. The distinction becomes more important when several source records contribute to each month.

Before drawing the chart, inspect a text table of months and the two totals. If you see one grand total instead of three months, return to the date type and the view’s detail. Adding a second axis cannot repair an incorrectly interpreted column or periods that have been combined unintentionally.

Define the shipping share

Create a calculated field named, for example, ShippingShare, using the expression below. All sales values in this exercise are positive. A zero denominator in a real report needs a separately agreed rule; do not silently interpret an undefined ratio as zero percent.

SUM([ShippingCost]) / SUM([Sales])

January divides 100 by 1000, producing 0.10, displayed as 10%. February divides 300 by 2000, producing 0.15. Percentage formatting changes presentation. Do not also multiply the expression by one hundred if you intend to format its result as a percentage.

Tableau’s aggregate functions support calculations at the view’s detail. Using a sum in both numerator and denominator defines total shipping cost divided by total sales for the month. That is a measure you can describe precisely to a reader.

For a separate synthetic example, imagine two records: sales of 900 with shipping cost 90, and sales of 100 with cost 20. Their individual percentages are 10% and 20%, whose ordinary average is 15%. The combined share is 110 divided by 1000, or 11%. Decide which question you mean before drawing the line.

Place the month and first measure

Drag Month to Columns. From its menu, choose a continuous date at month level so the timeline retains both month and year. Continuous fields appear green in the English interface. A month within a particular year is different from a month name that can combine January observations from several years.

Tableau’s continuous-date help explains date parts and continuous dates. At this point, verify that the view contains January, February and March 2026. With a multiyear source, that small check prevents an especially confusing comparison of combined months.

Drag Sales to Rows. Inspect the aggregation shown on the pill: this example needs SUM(Sales). Set the mark type to Bar on its Marks card. You now have a simple sales view that should already match the three amounts in the table.

The data-aggregation documentation explains the aggregation applied when adding a measure. I always read the field’s displayed name. Numeric data alone does not establish that the selected operation answers the intended question. A sum and an average can look similar while meaning different things.

Add the second measure and choose Dual Axis

Drag ShippingShare to Rows beside the first measure. Tableau may initially show separate panes. Open the second field’s menu and choose Dual Axis. Tableau Desktop also supports the measure’s context menu; on a Mac, control-click provides the corresponding interaction.

After layering the measures, you should have one plotting area with separate vertical references. Give the left axis a clear sales title and the right axis a shipping-share title. Format the latter as a percentage. If it displays 0.15 where you expect 15%, check the format before changing the calculation itself.

I finish this step by inspecting tooltips. January should show sales 1000 and share 10%, February 2000 and 15%, March 1500 and 10%. A specific value is a better check than an attractive point position. Only after the values agree do I move on to colors and visual cleanup.

Work on the correct Marks card

With two measures, Tableau provides individual Marks cards and an All card. Keep bars on the sales card and choose Line on the shipping-share card. Changing the mark type on All may affect both layers. Read the active card’s name before making a change.

Use distinguishable colors and sensible sizes. The line should remain visible above the bars without obscuring their entire area. I do not rely on color alone: axis titles, mark types and tooltip descriptions should reinforce one another. A reader should have more than one way to identify each series.

Also watch fields added to Detail or Color. An extra dimension can split one layer into additional marks. If several lines appear unexpectedly, inspect the detail on the active card. Sharing a pane does not guarantee that both layers have identical structures or answer the same level of question.

Linked measuring instruments share a reference while separate instruments retain independent ranges

Decide whether synchronization is meaningful

Synchronization gives the axes a common numeric scale. Use Synchronize Axis from the secondary axis’s menu, following the official instructions. A typical meaningful case is actual sales and planned sales expressed in the same units and convention.

Our sales amount and shipping percentage have different units, so I keep them independent. A value of 0.15 describes a share; 2000 describes an amount. A common numeric scale would flatten the percentage line without creating a useful comparison. Formatting the share as a percentage does not remove that difference.

Similar numeric magnitudes are insufficient as well. A temperature of 20 and a count of 20 orders do not become comparable because the numbers match. Conversely, same-unit measures can differ greatly in size, and a common scale may honestly reveal that difference. Establish units and the question before adjusting the picture.

Why the picture can suggest too much

With independent axes, a mark’s height depends on its own range. Change the right-axis minimum and maximum while keeping the source unchanged, and the percentage line moves relative to the bars. A crossing between different-unit series therefore does not indicate equal values.

I treat that flexibility as a reason to explain the chart clearly. State whether the view is about levels, direction or distance from a plan. Avoid choosing ranges solely to manufacture a preferred visual conclusion. If one pane cannot communicate the intended question clearly, two separate charts can make a simpler presentation.

A simultaneous increase does not establish causation, either. Shipping costs and sales may both relate to business volume, order mix or other changes. The chart can identify a question worth investigating. Answering it requires suitable data coverage, definitions and understanding of the process behind the measurements.

Check axes and missing observations

The axis-editing documentation covers ranges and restoring hidden axes. If editing options differ from what you expect, check whether you selected an axis from a continuous field or a header from a discrete field. Those are different view elements despite sometimes occupying a similar place.

For bars, I want a meaningful baseline for comparing length, usually zero. I avoid a narrow range chosen just to exaggerate a small change. If a line uses a range intended to reveal small movements, the title and context should make that decision understandable. The reader should not have to infer a hidden scale restriction.

A missing month or value needs separate interpretation. Do not automatically treat missing data as zero shipping share. It may mean an absent file or no sales available for a ratio. Before publishing, agree how that case should appear and whether the line should suggest continuity between the available points.

Consider alternatives

Same-unit measures can share one axis through Measure Names and Measure Values, as the multiple-measure documentation describes. Consider that option when the purpose is straightforward comparison of levels. Two source columns do not automatically require two scales.

For different units, I often consider separate panes with a shared timeline. They take more room but give each measure an unambiguous context. This is especially useful on a phone, where two vertical labels, a legend and tooltips can leave too little room for the actual data.

Another option is to compare change from a baseline. That changes the analytical question: an indexed view describes relative movement rather than original amounts and shares. The title must say so. Choosing a different chart should clarify the question rather than quietly replace it with a more convenient one.

Troubleshoot the underlying view

If the chart contains one point, inspect its date level and filters. If amounts are larger than the table, inspect aggregation and the source model before changing axes. If a percentage is repeated unexpectedly, return to its numerator, denominator and the dimensions in the view. A display option cannot resolve an incorrect definition of the measure.

If Synchronize Axis is unavailable, inspect field types and the product version. Current Tableau documentation notes support for synchronizing differing numeric types from version 2018.1. Avoid following an old screenshot that implies every integer-versus-decimal mismatch always requires conversion. Technical availability also remains separate from whether synchronization is meaningful for the units.

For handover, preserve a small reference table alongside the chart. It lets another maintainer trace February’s 15% to 300 divided by 2000. Include the reporting period and definitions of both measures. Those details matter more to a reliable future update than the precise shade used for the line.

An exercise before publishing

Build two views: sales with shipping share on independent scales, and sales with shipping cost in the same unit. In the second, deliberately compare the effect of a common scale. Write the question a reader can answer from each version. If the descriptions are identical, revisit units and purpose.

Next, change one independent axis range and observe how the apparent relationship shifts. The input numbers have not changed. This makes a useful practical demonstration of why similar shapes should not carry the entire argument in a report commentary.

Finally, ask another person to read February’s values without your guidance. Check whether they distinguish sales from share and choose the correct axis. Inspect the chart at its intended display size as well. If every series needs a spoken explanation in a meeting, improve the labels or simplify the view.

For a separate foundation in how grouped values are produced, continue with WHERE and GROUP BY in SQL. The tool changes, but the question remains familiar: define the source detail, define the output detail and make sure the measure still means what its name promises.

Key takeaways

What does Dual Axis mean in Tableau?

Two independent axes layer measures in a single pane. In this example, both measures share the same monthly horizontal timeline.

When should I use Synchronize Axis?

When a common numeric scale is meaningful for both measures, usually with the same units. Similar magnitudes alone are insufficient; I keep an amount and a percentage on independent scales.

Does a line crossing prove a relationship?

No. Position depends on both axis ranges. A chart does not establish causation, and a crossing between different units does not represent equal values.

Kajo Rudziński

Newsletter KajoData

Let’s keep in touch.

I write about data analysis, learning and changing careers. My newsletter and the sign-up form are in Polish. If that works for you, I’d be glad to see you there.