Building Custom Tableau Visualizations with Mark Layers

Beyond Maps: Building Custom Tableau Visualizations with Mark Layers

By Celia Fryar

What if a complex Tableau visualization could be built on a single worksheet, resize reliably across different screens, and require far less maintenance? That is the opportunity Marks Layers provides. Bringing the full visual composition into one worksheet can result in highly responsive, performant experiences without the fragile layering and assembly of multiple worksheets that must be carefully positioned and maintained.

Traditional dashboard designs often combine many worksheets, each responsible for a different visual element. These complex compositions can create appealing results while requiring significant time to build and maintain. Additionally, elements that appear perfectly aligned during development may behave differently when the dashboard is resized, embedded, or viewed on another device. Marks Layers offers a more streamlined approach by placing the elements together within one worksheet, where their layout and relationships are established from the beginning and the visualization can take advantage of Tableau’s native autofit capabilities.

The technique gets its name from Tableau’s map functionality. It uses a spatial grid as a layout plane, allowing the designer to make intentional placement decisions for each element. Although the method can initially feel mysterious, the design principle behind it is not unusual. Every professional visualization should begin with a layout plan or sketch. Marks Layers simply provides a resilient way to translate that plan into a finished Tableau experience.

My goal for this webinar was to make the method approachable. Rather than treating Marks Layers as an advanced technique reserved for a small group of developers, I wanted to simplify the process and walk through it step by step so that each participant could complete a successful first build and begin applying the approach to their own projects.

Watch Beyond Maps: Building Custom Tableau Visualizations with Mark Layers

>> CELIA FRYAR: Welcome, and we are going to talk about mark layers, and this is specifically what you guys voted for last month, and so we just want to let you know we do take that seriously. Thank you for participating and letting us know what you think would be useful and helpful. As you know, we do this every month. On the second Wednesday of the month, I have a quick list of things that are coming up and of things that are DDC and otherwise that Xeo is involved in. Then I’m going to also pass it to you in a minute to talk about your TUG.

If you don’t mind, please, kind of think about that, Lauren. We have a couple of really great presentations coming up in what we’re helping to bring to online webinars this month. Tomorrow, a good friend and Tableau Conference speaker, Ghafar Shah, he works at Vanguard. He’s going to be redelivering his data literacy presentation along with a spotlight guest, Kelsey Oehrke from Denver. She’s one of the DataFam rising stars. She uses map layers and mark layers to a whole other level, so she’s going to be our guest there that we’re going to spotlight.

Then the San Francisco TUG that I co-lead is having Louis Yu coming in. He’s a Tableau visionary, and he’s going to be talking about using Tableau’s MCP protocol to API to be able to get Claude connected to it and do well with it. He was one of the early adopters and is going to be talking about not only just his career progression but mostly about Claude and how to use it well with Tableau. Our DDC, based on y’all’s feedback, we decided to use that time to talk about Tableau+.

As you may or may not have heard, the Tableau agent, which is a lot of these toolings and feature sets that’s under the hood, is now being called in a couple of bundles. I want to just kind of decode what’s included in what and then also give you a demo of what those things are. We have a couple of different Claude sites so that we have those things set up for them. That’ll span from the Q&A that you can do inside of Tableau Cloud through a quick update on what’s happening presently with Tableau Next.

More like demos and show the feature sets that are happening. Now, part of the reason that my interest has been in this direction, beyond the fact that I’ve been involved in the Tableau Next beta, is it’s been a disproportionate amount of time with Tableau Pulse this summer and being connected with that team that’s doing the biweekly releases. They are also being impacted by the Tableau agent coming in because there is literally a ChatGPT 5.2 that’s going to be on the backside of Pulse, the Q&A section of Pulse.

If you haven’t looked at Pulse lately, this year, particularly 2026, has been a really productive and feature-rich year for them. There’s ways to implement it very shallowly that you get a shallow result out of it, and then ways to add context, and links, and things that make it much more robust experience for your users. If you have any interest in that, definitely this is a good time to dive in. We’d be happy to talk to you offline about it. The thing we’re going to dive in today is mark layers.

Then I just want to mention in terms of, like, the next topic after this is composable data sources, is a topic that is top of mind for myself and for Lauren. We’d very much like to hear your feedback as we go through today on if that’s something you’re interested in. I just got the chance to invite one of our industry leaders to come talk to us about it in September. Unless you all say you’re not interested at all, that’s likely what we’ll do in September. That’s the roadmap of where we’re headed here. I hope that sounds good to everybody.

I’m rather excited about what’s coming up, but it’s all about what you guys would like to hear and see what might make a difference in your world. I almost feel like every month when I look at this slide deck, about taking a slide out. This is so old news here now, but we are in a webinar format, except for we have left it where you guys can potentially come off of mute and talk to us. Please, any questions in chat, we welcome those. It makes it more fun, more interactive. For any of you that didn’t– let me finish this other part first, sorry about that.

This is Lauren’s and my project that we had to bring to you monthly. Lauren, would you kindly introduce yourself for anybody who hasn’t had a chance to meet you yet?

>> LAUREN CRISTALDI: Yes, so I’m Lauren Cristaldi. I’m based out of Charleston, South Carolina. I run the Charleston TUG. We haven’t had any events recently, but I pushed that to August just because I’ll be in the UK for most of this month. Then I’ve been in Tableau for almost 10 years, but I’m okay with eight years, that means I’m younger, so that’s fine.

[laughter]

>> CELIA: Okay, I’m updating that this time.

>> LAUREN: No. You’re good. I manage our data analytics team here at Xeo. Been with Xeo for– this is my fourth year, and I come from a state government background, just for y’all that don’t know me. I think I know most people in here. Celia and I have been doing this for a while.

>> CELIA: Yes, I love it that that’s your background though, because– not though, because it means, whoever you are, especially if you’re in a state government situation, being resourceful is required.

>> LAUREN: Oh, absolutely, yes. I do all kinds of crazy stuff with PowerPoint, like making shapes and backgrounds, and it’s so nice having access to other tools now.

>> CELIA: Right, yes.

>> LAUREN: Makes you creative.

>> CELIA: I guess also if you’re in a startup, that’s going to be the case, where your budgets are tight, and creativity is required. I am the lead for training and enablement at XeoMatrix, and also do part-time at University of San Francisco. Data has been my full career, like started in databases a long, long time ago, but analytics has been the key focal point of the last 15 years. 10 of them I’ve been teaching. I should say I’m an accidental educator, except for I really like helping people and helping them take it to the next level. That’s why I landed in this zone of being in education.

With that, we’re going to jump over into mark layers. You can see that I just changed the title of the session every time I set a different slide about it. It’s even different than the announcement, but the goal of this is to have you walk through with me a couple of examples, because being able to use it for the work that we’re doing is going to be a game changer. In chat, if you– let me reshare it in case. I’m not sure if this chat will show up, depending on when you joined. Don’t think that that got the whole link. Let me try that one more time.

There we go. Feel free to look at that. The link that I just shared should take you to a directory. Get this Zoom window out of the way, and I can actually show you that directory. There we go. This is going to be the starter workbook that’s going to look exactly like mine if you open it up straight away. You don’t necessarily need to have these two CSVs, but they are the data sets that one’s a CSV, and you see that one’s an Excel file. Those are the two source files that were fueling this particular workbook.

If the TWBX decides that it can’t find its source files, you’ve got them to be able to reconnect. That’s what’s in the shared link in the directory. Please, even if you’re just going to relax and watch what I’m going to do, I would recommend that you go ahead and grab that so that you have it for later. Because I feel like building charts with mark layers just takes a little bit of practice, and it’s just a different mindset than the typical Tableau way of doing things. It is really, really high performant. That actually is like one of the first points to make here.

Lauren, I’m going to invite you to please make a few comments about it. Lauren is the first person I sat with and learned from about last summer timeframe. Because I always thought that it was going to be too time-consuming, but watching what she’s done and the elegance of it, on her Tableau public page, if you have a chance to go take a look, she’s got some beautiful things that are some of it– we used to have to, like she said, use PowerPoint or Canva or something to do the more elegant kind of presentations of things.

Then it went from map layers to mark layers to chart layers. It sounds like I’m stumbling on my words, it’s just I’m trying to keep up with the terms changing because we used to– as you see, when we drag it on, it won’t say “map layers” anymore. It’s in mark layers because it is where we place the marks, but it’s more performant. It auto-fits, auto-sizes better. Lauren, you’re, by far, the expert on this. Is there anything you want to add there about reasons to use them?

>> LAUREN: Yes. It’s really helpful if you have any custom formatting that you’re trying to do. Also, I’ve been using them recently more for passing, like parameter filter actions. You’re able to like establish– so say you have a measure in a view and you want to go to the detailed version of that, like with, I don’t know, account IDs, like more granularity. It’s hard to do that if you’re just using measures from like the measure value shelf, you’re not going to get an accurate filtering. This helps, and it’s more performant to use those parameter actions anyway.

It takes you to that detailed view and you’re only seeing the detail behind that, like percentage rollup measure value.

>> CELIA: That’s cool. That’s great.

>> LAUREN: Yes, that’s my favorite one right now for use case.

>> CELIA: All right. We may have to put you on the spot for that at some point here shortly. [laughter] Awesome. Like I said, download the viz. The viz has a few notes in the captions so that when and if you’re doing this later or something, you’re welcome to do that. I thought we’d start with just a simple one that I know we’ve shown before, but I’m going to show it again because I think it’s an incredibly good warmup and emphasizes a couple of points here. That is to just do a donut point.

With most of these, what we’re doing is we’re using MAKEPOINT, and we’re setting coordinates for where we want something to land. A couple of big-picture perspectives is we are going to land it where Tableau initially thinks we’re doing GPS coordinates, and then we’re going to do something else with it. You need to not dismiss the background until you have two mark layers. I’ve got my donut 1, and I’ve got my donut 2. They’re by default going to come in thinking that I’m talking about a map, but the reality of it is, like for me to do a donut, I need to have one of them be a pie, and the other one be a circle.

Then I’m going to dress them up for a minute before I do anything else. If you’re following along, you can make sure you have your two donut points, mark cards that are showing, you’ve got your two layers. Then I will free up on some of the background changes we’ll make. The first one, but I’m going to put a dimension and a measure or two on before I do much else. I’m going to put region on the color for my pie, and I want my wedges to be done based on the sales angle. Then for my labeling, I’ll have one of each of these.

I’ll go into my donut, and then that’s going to be my circle or my center part, and I’ll put sales on it because it’ll be actually just a label in the center of it all. I have an absolute mess over there right now. That’s exactly what I expected to see, right? Then I’m going to increase the size of this one a little bit so that hopefully it’ll show up. I always change this to being colorblind palette because that’s my favorite, and I think it’s really fantastic. I don’t like light gray, and normally I would spend more time on that, but that’ll be good for now.

All right, so now having my two layers, that makes it so that, in a couple places, I can go and I can turn off the maps just to be really abundantly clear. If I go to the map menu at the top and I choose my background maps, to set it to none is a great way to go. Then also, that usually shows you what’s happening with your coordinates. On the next one we do, you’ll see that. I’ll put this to entire view. I’m going to uncheck these headers and get rid of some things on that. This is where I can take longitude latitude off of this, but this one, I’m going to get rid of that.

Then I need to do a little bit of cleanup. I need to do my circle to being white and then alignment on my label here. I’ll go to this, put it in the middle middle, and more than likely would want to have this number be a different format. Lauren, in my mind, I’m going through that thing of wanting to show what you’ve done with being able to change and have multiple mark display levels inside of the text, but I don’t have that set up here right now. Know that it is possible, y’all, to have multiple mark display levels and measurement display levels without having to wait on the new version of Tableau to come out.

Lauren has a very clever way of doing that. I’m going to make this about 15 and bold, and that’ll be good enough for that. Then the way that I have personally solved for not being able– and what we’re talking about, see how it rolled these all up to millions when I did this on the center one. That’s usually not very helpful. My workaround for it has been to do the following where I go, “I really want this to be more reflective of that donut, parts of a whole thing.” I’m going to add a quick table calculation show.

It’s actually showing a percent of whole, percent of total, that is, and then I’m also going to need to, after it gets that calculation on there, then it sees it as a little bit separate thing. I can give it a percentage, and that shouldn’t cause me trouble with the center. See, this one has recognized it as a different instance of sales, so I don’t have any competition here. Fix my labels a little bit. I like to make them a little bit more pronounced. I personally think that this is a great way to create a legend where you don’t necessarily have to have your color legend right next to your donut.

Especially if you don’t have room for it on your dashboard. That’s always a trick. I’ve had a couple of friends say to me that this makes them potentially unaccessible. I think that that’s on to us for being able to make sure that you use a font that is standing out and a color that’s not disappearing. Then go ahead and, if you need to, change the font type to be something more pronounced if that’s really what the issue is. The deal here is that on a dashboard, you’re going to spend less time trying to get the auto-fit, auto-sizing working when you hang it together as a mark layer using the map background and the coordinates and all that.

It does an infinitely better job of auto-fit, auto-size inside of containers or outside of a container in a dashboard. All right, so just for my benefit, if you’ve ever done a donut or pie, you wouldn’t do it as a pie, but if you’ve ever done a donut on a dashboard using map layers or mark layers, which we’ll soon be calling chart layers, can you give me a reaction on screen, like a thumbs up or a– and a few of you guys were in class with me, so I hope you have tried it. I’m just saying. Nobody’s tried it? Add a reaction to your Zoom window?

Then this will be new too, because this will actually be helpful, I think. For those of you that are here, would you kindly give me a thumbs up if you are likely to try to implement the mark layers type of device and graph or chart? Cool, awesome, very good. All right. The next one, as some of you know, I’ve been lucky enough to be part of a mentorship group with Andy Kriebel this year. This is actually one that, if you’ve watched some of his recent masterclasses that he does as webinars.

This is an exercise that he built that I believe is one of the most approachable ways to get to it, because if you look at what’s here, and I unhide the sheets, and I look at the dashboard, this literally has just one sheet and a nice gray background. To be able to hang this thing together, it takes a combination of multiple marks cards, but in terms of performance, I could have really big data behind this, and it’d be very performant, as opposed to all the layering and precision fitting I would have to do if I was trying to build this with kind of the older method that we used to use of layering things up.

What I did here was I gave you a blank dashboard space where you can– I’ve got a blank on here to hold it so that it didn’t just disappear. It’s got the gray background. What I’d like for us to do is to use this last chart space, and just, I’m going to walk through this and encourage you to do it, because they’re like– and then I have another document that’s a walkthrough I’ll throw into that Google Drive. For anybody that’s came in whenever, I don’t know that you saw– just so that everyone has had a chance to hear it, there is a Google Drive link in our chat.

Please take advantage of that. It’s got the starter workbook, and then it’s got the two files in case the data source gets lost along the way. All right. I’m sure that never happens to anybody other than me, but I’m constantly moving dashboards and workbooks around. All right, so we’re going to start here. I think the thing that is most distinct in my mind about building one like this versus what I might do regularly is you kind of have to pre-think what you’re doing, right? Fortunately, I have a target here.

I’m going to put these bars in place first and come through here and do the labels across the bottom and the labels across the top. You’re going to be surprised at how simple the labeling is. It’s just a pattern of making a spot, making it a circle, and then hanging a title around it. The only part in my mind that’s actually tricky is there’s two parts that I feel like are tricky, and I’ll point those out as we go on. All right, so the first thing is I’m going to put the bars in place. I already have these fields pre-built for you.

If you look through here, a couple of principles are I’m going to use something called a point ID to help guide the experience. You may see that in my folders now, I reorganized mine. I don’t like them like that. If I was looking at it by table, you can see that I have my sales and budget table. Then inside my what’s called sheet 1 is just a list of point IDs. That’s rather important because the way that Andy created this was every bar in this is representing 5%, and so 25 bars is 100%. That’s important because it’s setting my scale and how we’re going to divide out those little Gantt bars.

I only want 25 of these. In this table, there’s 100. Straight away, you can see that I want to change that, and I want to uncheck. I’m going to say none. I’m going to say use all, go into condition, save my formula. Then I’m going to say, only give me the point IDs that are less than 26. That should give me up till 25, and you can see on screen, that’s exactly what I have. I used all. I unchecked everything, used all, went to condition, set that. That’s my first step. Now, I’m not going to have that on screen, but I am going to have that as a limiting filter so that it’s going to organize my bars correctly.

The other thing is I have four regions here, and I’d like to start with just the one. I’m going to just make that be one bar that I’m building so that I will come back to this later and turn these on. Let me do my normal stuff. I’m going to make it a dropdown and put on my customize because I just think that any chance to clear the screen should be eliminated. As you guys know, the ones that you know me. That’s how I’m going to get started and on setting the boundaries. Now, I’m going to build the bars. Let’s start with the bars anyway.

We’ll go to the one that is the bar. I’m going to put it onto there. You can see that I have, actually, dots going across this like the middle of the earth. In just a moment, I’ll change my mark type. I guess I can go ahead and do that to Gantt, is what I’m doing, because I want the little dashes instead. Now, I’ve got a single dot, but the reality of it is when I pull a point ID onto detail, that’s going to reinstate my 25 across the lot this way. Notice that they’re horizontal versus vertical. I’ll fix that in a minute as well.

I’ve got my bars. I’ve got my point ID. I’m going to be sure and bring region onto most of these cards. Then I’m going to have another field called marks to color that is already present here, right there. It’s a true/false, so Boolean. It’s basically taking the percent of total sales. It’ll be subdivided by the regions because of the way my boundaries are set up, and multiply it by 25 so that I have that– that calculation will give me, it’ll help Tableau know which one of my Gantt bars to color. That’s important. I’m bringing that onto my color.

You’ll see that straight away, it’s really, really hard to see, but these first few are red now. There’s one final touch to make this not be dashes this way but eventually stand up like this. That is to use a– I don’t know if you want to call it a hack or a trick, but it’s to use average of one because what it eventually will do after we release some of this, you’ll see that it’ll make it stand up instead of being across. I’m going to bring that on to size, and that will change it after I release the background. I’ll leave this for now, and I’ll go on to my second Mars card, which is going to be my sales label.

I’m not going to pause to look at all of these, but just to make the point, most of them are MAKEPOINT, and they’re some sort of coordinates. I’m starting at zero for most everything, and I’m telling it where the start and the end, or the X and the Y, all right, is the thinking here. I’m going to bring this onto my mark labels, mark layers, there we go. It gives me a new card to work with. I’m going to bring sales onto label. I’m going to bring all sales onto the tooltip because I want it to be a member of this worksheet so that I can use it in my title later.

That’s just a convenient place for me to put it. Region needs to stay put on all these things so that it’s sliced and diced correctly. I’ve got my four things here. Now that I have my two cards and a few things here, and you can see I’ve got a little bitty– I guess we can go ahead and format that. My mark layers for sales label, I’m going to go ahead and tell it to make this 15 and probably boldface. I might want to update at the game on the font being used. Then I need to go to alignment, and that’s where most of these things get really interesting.

For this one, I want it to be below the dot that it’s got over there, where it’s really difficult to see at the moment, but you’ll be more clear on the next batch. I want it to also be more to the left side of the dot. They’ll move more when I release the background. All right, so those are my first two cards. Now I can go to map and to go to the background, and I’m going to tell it to go to none. All right, and just like that, now it’s looking so much closer to what I’m looking for, except where we– one thing that I’m amazed how many times I do this and then I forget to do it, the labels need to be circles.

On every one of these, I have to go through and tell it to be a circle, and then I get the little dot, and then I position my label somewhere around– because you can move it pretty much in 360 in all the directions, not with a lot of granular attention. For that, you would need to move it around with what Tableau will let you do with a little bit of specific manipulation there. Anyway, so now you see how it’s looking like an actual chart, like a piece of graph paper. I’ve got my zero axis here. You can see how it goes only up to 26 because of what I did with my limiting the point numbers.

Then I’ve got the single dot with my label here. All right. To make the label invisible, really just as simple as if you want to, you can make it white, you can also just turn it to opacity to none, and that will make it disappear. Now this is becoming a good tool for me. I’m going to change the format of this so that I have the number in the pane being a currency, one decimal place, and I’m going to roll all these up to thousands. I think that will work out well for my big and my small regions. All right. That’s the laying the big foundation.

The next four things are going to be labeling around the edges. All right. Let me quickly move through that so that you can see that. Any questions so far on what happened there? The average zero is what was responsible for making this bar switch from a dash to a stand-up, and we’re basically average of one. Something I learned from Andy, took it from being just a little piece here to being where it’s stretching up to there for the average of one. Who knew? That’s what happens, I guess, when you start with Tableau in 2008.

In any case, let me add those next pieces. My next label is going to be the region label, and each thing I’m going to add, I’m going to drag it onto the canvas to the top-left corner to mark layers. First thing, I need to change it. If I took a layer and that’s going to be a label, I need to change it to be in the circle. Then I get my little dot. You can see where it is, what you have to work with. Then for this one, I’ll put the region name on it, of course. Region name on label. Then I’ll format that the same as what I did with the other. I made it 15. I told it to be bold.

I upped the ante on the distinction there. See how straight away it’s in the wrong spot, and that’s all about alignment here. I’ll tell it to go below, and then I’m going to tell it to go to the right because I want it to tuck in underneath the little bars. Then I can go back when I’m satisfied with how it looks and go back to circle. The circle’s color and either just reduce the opacity to none. Or if you think there’s any chance it might show up inadvertently, turn it to white or clear or match your background, whatever that is. Opacity to zero really should get it done.

Now, I’m going to move on to doing these little labels across the top. The first one is going to be my zero label, and just to show you the calculation that’s underneath here, I’m telling it to go to one. It’s up here on my one graph for my Y, and I’m telling it to go to 0.5 for this location, which I get on here. This time, hopefully, I’ll be consistent with my changing it to a circle. We don’t really have like a number in our table that’s going to correspond to that, to being zero. I am going to go ahead and bring region on to detail.

In this box, on my marks card for zero label, I can double-click in the space below, and I can give it a literal. Don’t know that that’s well known or not, but I can give that just, “Hey, I want to add this into this viz.” Becomes a pill that is a literal value, drag it onto my label, and there it is. Now, I just need to reposition it. I am going to leave it small. I probably will go ahead and make it bold, though, because I want to match the mark color, which is a gray. Then I’m going to change the alignment to where it’s going toward the right, and it’s going above the graph as it sits.

I’m pretty good with that. I’m going to go over to the color and make it disappear. There, my little dot would be here, and my number for zero is roughly at zero. If you wanted it to hang out more, you could, or whatever, but that’s all about that little formula where you have made that XY coordinates happen. Same thing for my next one, which is going to be my 100% label. Pull that one over, get the new card, change the mark type, add region onto the detail for later. Make sure that I’ve got my literal for 100% because I don’t have that in my table, nor should it have the load of doing that.

This is just literally just a labeling detail. There’s no need of that being something else. Go into the label, change to boldface, and match mark color. We’re going to do the alignment of above the line and to the left so that it ends where our bars end. I’m good with that. I’m going to change this to being opacity disappear, please. Good, all right. Now we need to mark where the value is. This is where my percent of sales will come in, and we need an actual point that is going to be using percent of total sales.

It says make my point and then go up to one, which is at the top of the bars. It’s using percent of total sales and basically dividing it down by 25 because of the way we’ve done our bars and the math and the increments of that. Bring actual points on here. Make sure to change it to a circle so I get a dot. I’ll bring the metric for it onto the label so I get the actual number. Now I need to change the color. I need to just basically need to update the presentation of it all. On this one, I’m going to use a red that matches the color of my bars, and think we also might bring it to medium so it stands up a little bit more.

Then put it above the bars and in the middle or to the left. Just depends on what you feel is working with your bars. I’ve seen it done both ways in the time I’ve been hanging out with the group at my mentorship group. I think that that works really well. Then we’re going to bring the opacity to zero, and so there we go. Now there are a couple of really important finishing touches to get it from the single bar to the four and sharing the view. That’s the couple of things that we’re going to really dive into next.

We need to make sure that we have a little breathing room in between the barcodes, if you will. I’m going to achieve that by editing the axis and making it a custom axis that’s going to go from negative one, and I’m going to take it up to positive two. That’ll give some edges on both sides. I like how that fits. I think that that’s about right. That’s that. You got to be sure and edit the axis before you dismiss all the framework around it to be able to edit that axis. That’s really important. Also, I’m going to change it to be entire view because when I get all four of them on here, I want them to fill whatever space they have to fill.

Then there’s a calculation that will go on to rows and columns that is using the combination of indexing and a square root, and a round, and a size. That’s actually probably a longer conversation for them for right now. These are essential to making it so we can split the view. I’m bringing my rows on the rows and columns on the columns. It looks very similar, just slightly different. You can see the calculation for yourself when you get my workbook. Then an important touch here is I need to tell it to compute using the region so it can make space for the others that are coming.

Compute using region. Beyond all the simplicity that has gone before, those would be our little bits, would be technical pieces. I’m going to double-check over here. I have some finishing touches to do for sure because, for example, when I look at my tooltip, it’s got a lot of extra things in here I don’t need and don’t want. Some of that’s going to be taken care of when I do the following. I’ll go through a series of going to these fields and unchecking being included in the tooltip, as well as I don’t need this to have its header shown as well.

I’ll do that for those, and I’ll do that for my longitude and latitude. You can see it’s cleaning up a lot in the background. Now I’m going to go ahead and just show you what’s happening here. I can easily add the other regions on, one at a time or all at once, whatever works. Now I’m left with just the basics that we have to face on a lot of other visits of doing something more with my title and getting rid of the background. The background is just as simple as coming here, making my grid lines go away, my zero line go away, and going over to my row and column dividers and letting those guys be dismissed as well.

I could have set that up in the beginning, but I think it’s for the sake of sharing all the things you could potentially get into since Tableau generally, unless you set that to be gone in the first place, that will be on by default. I feel like that’s worthy just to show everybody. My final step here is literally just to do something better with my title, and that’s why I put all sales into the sales label in the first place to make it a member of this visualization. It’s here. I can see it like that. I might want to go into my sales label now and make it be a little bit more looking like a KPI and less like a super detailed report.

I’ll change that quickly to be a currency custom, display units of millions, and there it is. What was that? 15, 20 minutes, now I did stage it all up, but not too bad. Now I’ve got this beautiful chart that’s going to shrink or expand depending on whatever space I give it and perform really well because it’s not got a lot of extra sheets layered on. You can drag it as you’re practicing. You’re welcome to drag it in with the other things, and just keep in mind, I did put a blank in there to hold the space so that the gray background would sit still, just so that that could sort the sales from top to bottom.

Say more about that. What do you mean by that? Great, feel free to come off mute. North America first, that’s a great idea. Lauren, do you know how we could sort that from top to bottom with North America on first, or from the whoever’s got the most up top? It’s probably going to be my sorting here. Compute using.

>> LAUREN: Yes, you would need to sort– what is the sort? It says “specific dimension” right now.

>> CELIA: Right.

>> LAUREN: Go to the edit and that sort order specific dimension, that last option.

>> CELIA: Maybe that custom descending, something like that.

>> LAUREN: Yes, custom. Then I would do the region instead of that percent of total sales.

>> CELIA: Okay, pick up the name.

>> LAUREN: Then max.

>> CELIA: Max.

>> LAUREN: Then try ascending.

>> CELIA: Ascending or descending?

>> LAUREN: Yes, try ascending. Let’s see if it puts Asia first. It is working alphabetically.

>> CELIA: Yes. What if we do this for percent of total sales and then we get the big ones on top? I would need to do it for the columns one as well. That’s not-

>> LAUREN: Yes, if you do descending for that percent of total sales and then do the same for the row or columns.

>> CELIA: Columns.

>> LAUREN: Yes, because now we have North America on top, but we don’t have it to the left, but this should–

>> CELIA: There we go.

>> LAUREN: Yes, there you go.

>> CELIA: We just did.

>> LAUREN: Yes, North America first.

>> CELIA: Good question.

>> LAUREN: Europe second. Awesome. We did that on the fly too.

>> CELIA: How about that? Looks like percent of sales has lost its way. Let’s see for my–

>> LAUREN: Oh yes, the label.

>> CELIA: Yes, the label is definitely wrong. Let’s see if I just reload it, if it’ll find its way again. Circle. No, it’s got 100% on top. Somehow that’s not–

>> LAUREN: Yes, the other ones aren’t showing up.

>> CELIA: At all. Yes. Oh, you know what I missed here? Look at this. There it is. I just missed putting region on detail. Lots of little things, right? [laughs] That’s cool. Okay, cool. Y’all feel good about that. Thank you for the rescue. I mean, the help. Yes. There you go. Great. Thank you for the question. Great question, man. Yes, that was fun.

>> LAUREN: It’s kind of a rush when you figure stuff out on the fly.

[laughter]

>> CELIA: With people looking over your shoulder. True. Okay, so our challenge to you is to find one small thing that you can add a map layer. I mean, mark layers. I mean, chart layer. I’m just kidding. Start here with the donut. The donut is pretty straightforward. Should I do this? Should I tempt fate with trying to make the point of how it stretches and does well with this? I have spent a disproportionate amount of time trying to make donuts fit into whatever space.

>> LAUREN: Oh, yes. It’s so much work. That and before, when they didn’t have the percentage of adjusting the sizing. They don’t have it on desktop still, but they have it on cloud. You made like 10 different donuts, and you’re trying to get all of them to be the exact same.

>> CELIA: Exactly the same. Right.

>> LAUREN: So many hours.

>> CELIA: It’s painful, to be sure. All right. When you came in, the source material for this is in the Google Drive. Let me just make it right here at the end. How about that? I’m putting it into the chat. In the chat, you have the link to get into the Google Drive and get the starter, and I’ll put the finished one. To be fair, the starter doesn’t have the map layer donut, but it does have these descriptions of the key parts of that. Not all the finishing touches necessarily, but the key parts. Then this has– I left this in here with the sheet hidden, and then I gave you two spots to build in.

Feel free to dive in y’all and just e-mail me if you get stuck. It’s just a matter of practice. Even, I mean, it’s a bunch of times. You got to plan what it is you’re doing, sketch it out a little bit. If you’re not a drawer, then use a scale drawer or some tool, but get something in mind you want to do. Then you’re going to find a way to use that graph paper. I have a couple of friends who’ve talked about how they literally use graph paper to map out what they’re trying to do.

>> LAUREN: Yes, me too. That’s how I started it because I could not wrap my brain around it. I got some graph paper. I started shading different cells and building next. I felt like I was in elementary school again, a little school.

[laughter]

>> CELIA: Back in geometry-ish. Try to like build simple and expand out that. I think that that’s a good plan as well. Then it gets more robust and more friendly, where you can split things up in a way if you want, or say this one doesn’t have segment or some other dimension, but like to split them up and bounce them around, it gets so easy, and they keep their proportions. It’s more robust to be sure. Then you end up with, especially for anything you do like this with KPIs and whatnot, so many fewer sheets, so much less. Like where’s your investment going to be?

Is your investment going to be on chasing the maintenance of it? Or some investment in the beginning to stand it up in a way that’s more smooth and arguably just streamlined. All right. Quick reminder what we have coming up in the next little bit here, y’all. We have some good times happening this month, and Charles is coming in August. Then DDC in August will be this idea of the bundles have come into two categories recently. The main thing is we’ll be demonstrating Tableau Cloud with the AI turned off.

I have my university cloud site where we got that working, and I can show you what it will do. Tableau+ will do for you there as much as I can integrate it with Tableau+ metrics, I will do. Then also Tableau Next is getting more robust. I’ve also learned a whole lot about how we need to set it up to make it more successful in being that kind of interactive querying thing that we’re expecting from it these days. Our expectations have been all modified by our experiences with the LLMs that are the public LLMs.

Beefing up business preferences, by the way, is one of the ways to make Next just really so much more tuned to what we’re trying to get it to do. That’s coming up. Then we’ll have Kirk Munroe come talk to us in September about composable data sources. It’s going to be a good beginning of– I guess this is technically the beginning of Q2, or 3, sorry. It depends on if you’re using a fiscal calendar or not. Anything else, Lauren, that I’m not thinking about here?

>> LAUREN: No, I think you covered it.

>> CELIA: Okay. If there’s anything that you guys have questions about, I’d be happy to take a few. Thank you very much. Appreciate your comments. Greg, what a great question. Didn’t know if we’d carry that one off or not. It worked out well. Thank you. All right, team. Hope to see you back next month. in the meantime, be well. If you get stuck on any of the stuff we talked about today, just give us a call. Thanks, Lauren.

>> LAUREN: Thanks.

>> CELIA: I guess that’s it. All right. See you guys later.

>> LAUREN: Bye.

>> CELIA: Bye.

>> [00:47:19] [END OF AUDIO]

Presentation Summary

This session introduces Mark Layers as a practical way to create custom Tableau visualizations within a single worksheet. I demonstrate how coordinate-based layers can be used to build a donut chart and a barcode-style KPI chart, with each visual component controlled through its own Marks card.

Throughout the session, I explain how a coordinate grid, custom calculated fields, and different mark types work together to create a layered visualization within a single worksheet. The walkthrough begins with Tableau’s MAKEPOINT function, which establishes the x and y coordinates, using a simple donut chart to introduce the method before moving into the more detailed visualization. I also highlight planning and troubleshooting habits that make layered visualizations easier to build, including sketching the layout, narrowing your initial building focus, validating each layer, and expanding once the foundation is in place.

Session Outline

  • Understanding Mark Layers and MAKEPOINT calculations
  • Building a layered donut chart
  • Creating a barcode-style KPI visualization
  • Positioning values and labels with coordinates
  • Expanding one KPI into a multi-region layout
  • Sorting and troubleshooting layered views
  • Planning your first Mark Layers project
  • Final takeaways

Building a Donut Chart with Two Layers

We began with a donut chart because it simply demonstrates the core process and shows the initial presence of the map background. The visualization required two MAKEPOINT fields: one for the outer pie and one for the circle placed in its center.

You must have two mark layers on the view before you can remove (or turn off) the map background. Evidence of a layer is the presence of an individual marks card, which provides the opportunity to assign characteristics to each. Both layers are created by placing the custom calculated field containing the MAKEPOINT(0,0) function onto the view.

The first layer received the mark type of “pie” and became a pie chart, with Region placed on Color and Sales placed on Angle. I then used Sales again for the labels and applied a percent-of-total Quick Table Calculation so each wedge displayed its share of overall sales.

The second mark layer was assigned the mark type of “circle”, as it was intended to be the donut center and the holder for the KPI value. I changed its fill color to white and added the overall sales sum as the center label. Because the center and outer labels were controlled through separate Marks cards, I could format them differently without creating conflicts between their number formats or display levels.

Once the layers were complete, I removed the background map, hid the coordinate headers, adjusted the sizing, and set the view to “entire view” to fill the available space. The resulting donut remained a single worksheet, even though it combined two different mark types and multiple label formats.

Designing Labels for Clarity

The donut example also provided an opportunity to discuss accessibility. I used Tableau’s colorblind palette and formatted the labels so they remained visible against their surrounding colors.

Direct labels can reduce the need for a separate legend, which may be helpful when dashboard space is limited. However, the text still needs sufficient contrast, readable sizing, and clear placement. A label that technically appears in the view is not useful if it blends into the mark behind it.

Mark Layers offer more presentation options, but they still require deliberate design choices. Color, spacing, font weight, tooltips, and the order in which information is presented all influence how easily someone can interpret the chart.

Creating the Barcode-Style KPI

The second demonstration used a barcode-style KPI chart based on an exercise from Andy Kriebel. Although the finished visualization included several values and labels, the chart itself was built in a single worksheet.

I began by limiting the view to a single region. Working with one category made it easier to verify the coordinates and formatting before introducing the remaining regions.

The supporting data included a Point ID field with more values than the visualization required. I filtered the field to include IDs below 26, which created 25 positions across the barcode. Each bar position represented 4% of the full 100% scale.

After adding the barcode point, I changed its mark type to Gantt Bar and placed Point ID on Detail. I also added Region to the detail tile on the marks card, to preserve the correct level of detail as the chart expanded.

A Boolean calculation named Marks to Color determined which bars should receive the highlighted color. The calculation used each region’s percentage of total sales to scale the color across the bars proportionally.

The Gantt marks initially appeared horizontally. Adding AVG(1) to Size extended them vertically and produced the barcode pattern used in the finished view.

Adding the Sales and Region Labels

With the barcode in place, I added the calculated field for the sales value as another Mark Layer. Sales went on Label, while total sales was added to the worksheet so it could later be used in the title.

The mark type was changed to a circle, and the text label was positioned using the alignment selections to below the barcode. Once the text was aligned, I reduced the circle’s opacity to zero. The invisible circle remained the anchor for the label, but it was not visible in the finished view.

I used the same method for the region name. Its own MAKEPOINT calculation established a circle on the grid location, the Region field on the text label provided the label content, and the text alignment settings positioned the region label beneath the bars. Once the label was in place, the circle was made “invisible” by setting its opacity to 0 within the mark’s card color attribute.

This pattern is one of the most useful parts of working with Mark Layers. A label can be treated as an independent design element instead of being attached directly to the mark containing the data it describes.

Positioning the Scale and Actual Value

The 0% and 100% labels were created as separate layers. Because those values did not need to come from the data source, I entered them as literal values directly on their Marks cards.

Each label was positioned at one end of the scale and formatted to match the chart. The anchor circles were then hidden, leaving only the text visible.

The actual percentage label used a calculated point based on the region’s share of total sales. This allowed the value to appear above the correct location above the barcode. I formatted it to match the highlighted bars, creating a clear visual connection between the label and the chart’s filled area.

At this point, the worksheet contained the barcode, sales amount, region name, scale labels, and actual percentage. Each component was independently anchored and operating in ideal alignment.

Expanding the Chart to Multiple Regions

Before adding the remaining regions, I edited the axis to create more space around each KPI and set the worksheet to fit the entire view. Completing these steps early was important because the axis would become harder to access after the axis frame formatting was removed.

The multi-region layout used row and column calculations built with functions including INDEX, SQRT, ROUND, and SIZE. These calculations distributed the regions across a grid within the same worksheet.

I placed the Row calculation on Rows and the Column calculation on Columns, then set both table calculations to compute using Region. Once the filter was updated to include all regions, Tableau arranged the KPI units across the available space.

The underlying structure stayed consistent. Each region used the same barcode, label positions, scale, and formatting, while the calculations controlled where each complete unit appeared.

Sorting and Troubleshooting the View

During the live demonstration, an attendee asked how to place the region with the largest percentage of sales first. Lauren and I updated the sorting within the table calculations to use percent of total sales in descending order.

The initial adjustment moved the regions into the intended order, but one percentage label did not appear correctly. The problem was isolated to its Marks card, where Region had not been added to Detail. Once the field was included, the label returned to the correct level of detail.

This is a useful troubleshooting method for any layered chart. When one element behaves differently, review its Marks card before making changes to the broader worksheet.

Finishing the Visualization

Once the layout was working, I removed unnecessary fields from the tooltips and hid the remaining headers. I also cleared the grid lines, zero lines, and row and column dividers.

The sales values were formatted as concise KPI numbers. As total sales had already been added as a member of the worksheet, I could also include it in the title.

These finishing steps removed the visible coordinate framework, allowing the chart design to take the focus. The calculations and anchor points continued to control the layout, but they were no longer visible.

Planning Your First Mark Layers Project

Mark Layers become easier to work with when the design is planned before the Tableau build begins. A quick sketch can help identify the number of layers needed and the approximate coordinates for each component.

Graph paper is particularly helpful because it mirrors the coordinate-based approach. You can outline where the chart, values, labels, and supporting text should appear before writing the MAKEPOINT calculations.

Start with a small example and confirm one complete unit before scaling it across additional categories. The donut chart is an accessible first project because it introduces separate mark types and formatting without requiring complex table calculations.

As your comfort grows, the same principles can be applied to more detailed KPI cards, navigation elements, parameter actions, and other custom dashboard components.

Final Takeaways

Marks Layers offer a practical way to create high-performing, responsive Tableau visualizations within a single worksheet, with greater control and less maintenance. Watch the full session to see the method come together step by step, then use it as a foundation for your own designs.

Picture of Celia Fryar

Celia Fryar

Celia is a Training and Enablement Lead at XeoMatrix. A Data educator and strategist with over 20 years of industry experience, Celia is dedicated to turning analytics into action and opportunity. She's also an Adjunct Professor at the University of San Francisco.

Latest Blog Posts

Upcoming Events