One of the new features in the August Power BI Desktop release is the updated legends that are styled to more accurately reflect the per-series formatting on the visual. This made me curious how close I could get to the clean look of a Deneb (vega-lite) stacked bar chart.

I used open source data from the Vega github repo and applied a few filters in Power BI. I used exactly the same source data in each chart, filtering down to five sites and 9 varieties. I chose a visual with a legend, data labels, and total labels to display the differences. We can argue about whether you should show a chart with this many labels another day.

A Visual Comparison

A Power BI report page containing 2 stacked column charts. The top one is a Deneb visual and the bottom is a core visual. They use the same data and colors.

First, both charts show the same data in the same order, and use the color theme defined in the report. There are just a couple of things that make the Deneb chart look a bit cleaner. But even with decent Deneb experience, the core visual is still much quicker to make.

Here are some of the differences that I see:

  1. Deneb can match the shape shown in the legend to the shape used in the chart. So if I have a bar chart, my legend symbols can be rectangles instead of circles. Beyond just matching the shape, the width of the border in the legend vs column matches better than the core visual. The border around each legend entry in the core visual seems comparatively very thick.
The Deneb stacked column legend uses a square symbol while the core visual stacked column legend uses a circle.

2. The outlines for each segment of the column are cleaner in Deneb, without making any adjustments to the JSON to make them so. Notice in the top Deneb chart, the lines between each segment take up about a pixel and overlap so the border between each segment of a column is clean and thin. Then look at the core visual column. Despite the fact that I have the space between series set to 0 px, there is a tiny bit of space between the borders of two adjacent segments. It is, of course, less pronounced when you zoom out further, but it’s there. And it can look a bit inconsistent. I don’t really notice the space between the segments labeled 56 and 44, but I do between the segments labeled 80 and 93. That’s likely an artifact of the fill colors being lighter and blue at the bottom vs a gray color more similar to the border color.

The Deneb segment borders are clean and thin. The core visual shows both border lines and sometimes a bit of space between.

3. The other big difference to me is the spacing around the chart and legend. It’s not so noticeable without a border, but once we turn the border on, it becomes quite obvious. Power PBI requires a lot of extra horizontal space on the right side of the chart to achieve the same spacing. You may also note the difference in placement of the legend. Deneb places the legend down, slightly below the start of the plot area and slightly indented under the chart title. The PBI core visual has the legend completely left aligned, starting slightly above the vertical placement of the plot area.

There is more space above and to the left of the Deneb legend. There is extra space to the right of the plot area in the core visual.

Conclusion

The Power BI core visuals have improved quite a lot over the last year or two. It’s nice to show that they can have borders around bars, legends where the fill and border color match, and total data labels. But they are not (and maybe are never meant to be) pixel perfect. It seems reasonable to ask the Power BI team to provide formatting options to indent the legend placement and fix the border thickness on the legend entries. I’m not sure if we will see the segment borders improved to look as clean as Deneb.

But the important question is: how much do those things matter? Do you need pixel perfect? Is this just a team report that you want to look nice, or is this part of a product that you want to seem very polished? Given what’s available in Power BI right now, is it worth the extra time and effort to create and maintain a Deneb visual? Would your consumers actually notice the space between segments and get annoyed by the thick border in the legend, or is it just bothering us? Your answers may change across projects.

What other differences do you notice between the two charts? What, if any, capabilities would make the effort of Deneb “worth it” to you?

Deneb Code

P.S. You can find the Vega-lite code I used to make the Deneb stacked column chart here.