Tableau 3d chart

Tableau 3d chart DEFAULT

Disclaimer: 3D models in Tableau are not always the best option for analytical and business cases, but you can use them in bespoke visualizations or simply for fun. In any case, you can extend your knowledge about Tableau by creating such models.

Tableau public has visualizations made by using 3D technique. See the links as examples below.

1. The things we know about 3D in Tableau

I’m definitely not the first person to build 3D models in Tableau. Noah Salvaterrapioneered these techniques when he created a 3D Tesla. Bora Beran simplified his technique in his blog, Going 3D with Tableau. Allan Walker applied “shaders” – Guassian filters, slope, smoothstep functions. And Anya A’Hearn worked with Philip Riggs built the STL to TDE/Hyper convertor in Alteryx, as detailed in The 3D Full Monty.

Big thanks to Allan Walker, who shared the above history with me. If you have not seen the above or read these blogs, please take a few minutes to do so.

The Tableau community is so amazing and I have personally be inspired by all these methods, having used them to create some of my own 3D models in Tableau. There are a number of tools available for creating 3D models, including Blender (free), Meshlab (free), or SketchUp (not free). These tools allow you to export your model to ASCII STL (stereolithography) files. One such process is described in Anya’s article. Each row in a STL file represents a vertex and the format works with only triangles (polygon with 3 vertices). Anya’s blog contains a link to an Alteryx flow which converts the STL file to a TDE (Tableau Data Extract). I, like many others, don’t have an Alteryx license so I used a Python script for parsing the files. You can find my code here:

But you do not need Alteryx or Python to get data from .STL file — you can do it right in Excel.

The .STL format contains data about vertex coordinates (X,Y,Z) for each polygon with 3 vertices. .STL is a text format, so you can use Notepad for opening and editing it (I use Notepad++).

Let’s look at a fragment of a .STL file:

facet normal 0.000000 0.000000 1.000000 outer loop vertex 1.000000 1.000000 1.000000 vertex -1.000000 1.000000 1.000000 vertex -1.000000 -1.000000 1.000000 endloop endfacet

We only need to keep the rows with a prefix of “vertex”, then numerate the rows. To do that, follow these steps:

1.      Open your .STL file in Excel, check ‘space’ as delimeter

After finishing you can see something like this:

2.      Filter the data set for only those with “vertex” in column A removing other rows. Instead of filtering, you can also just sort by column A and remove all rows that are not “vertex”.

3.      Add a new column in front of column A called ‘Vertice_id’ and numerate rows (1,2,3,4, etc.). This will uniquely identify each vertex.

4.      Add another column, ‘Polygon_id’ with a calculation: =CEILING.MATH(A2/3). This will uniquely identify each polygon.

Rename columns C,D,E columns to X,Y,Z and remove all other columns. In the end you will have a something like this:

Save the file as .xlsx or .csv and connect to it in Tableau.

Use the X,Y and Z fields for creating a preview, so you can check you model at a glance.

3D Models in Tableau

You can notice that the polygons on the pic above were sorting by Y axis in ascending order, so it can explain by painter’s algorithm. The painter’s algorithm sorts all the polygons in a scene by their depth and then paints them in this order, farthest to closest. You can find out more about the algorithm .

For rotation you will need to create 3 parameters: XY-Angle, XZ-Angle, YZ-Angle and 3 calculations: x_rotated, y_rotated and z_rotated. I copied and pasted the calculations from Anya’s workbook . The formulas calculate projection onto a plane. You can now use these calculated fields in place of X, Y, and Z. Now, when you change the parameter values, the model will rotate. We can also add color. There are a variety of things you can do here, including coloring by Polygon_id or a calculation based on X,Y or Z. For instance, below I’ve colored based on the average of X.

3D Models in Tableau

And, with this, our 3D model is complete.

NOTE: As noted previously, I haven’t done anything new here — I’ve just followed the method described by Anya’s A’Hearn. The only thing new is using Excel to prepare the data instead of Alteryx.

I used the technique in my viz ‘Polygonal Cities’ which you can find here:

3D Models in Tableau

We can also experiment with other marks including bars, lines, circles etc. For example, in the following, I used bars: 

Illusion of 3D visualization in Tableau

You can’t really tell it’s a bar chart, but it is!

Illusion of 3D visualization in Tableau

This visualization is an illusion of 3D models in Tableau.

2. Let’s go deeper into other 3D formats

Everything above is based on .STL models. The issue with STL models is that they do not include information about polygons’ colors and they work with only triangles (i.e. each polygon has 3 vertices). But, there are different formats of 3D models including .OBJ, .DAE, .FBX, .KMZ. Many of these work with polygons with more than 3 vertices and contain information about textures and groups of polygons. I’m going to work with the good old .OBJ format (feel free to investigate other types of files if you like.) The reasons I prefer .OBJ format are:

  1. The format is open
  2. It is a text format, i.e. you can open it by Notepad (I use Notepad++ on PC and Atom on Mac)
  3. The format is easier than other formats for understanding and converting to .CSV format (in my opinion).
  4. A lot of models in .OBJ format are available in the internet for free ( for example)

To further explore some of the advantages of OBJ files, let’s compare the same 3D model in .STL and .OBJ format created in Tableau (see a picture below).

3D Models in Tableau

As .STL format works with triangles, the 3D model requires more polygons than the same 3D model in .OBJ format. Hence the .OBJ model has less marks in Tableau and looks better aesthetics. Obviously, due to the lower number of marks, Tableau rendering performance is also better with .OBJ model (You can compare rendering time on the picture above. The rendering time was taken using performance recording in Tableau.) But there is a disadvantage of .OBJ format: in case of complex polygons in .OBJ format more discrepancies may occur due cyclic overlap or piercing polygons.

3. What is the .OBJ format?

Let’s talk a bit more about the OBJ file format. (To know more about the format, see the description).

 Here’s a fragment of .OBJ file:

Each Mesh in .OBJ file contains Polygons (Faces). Each Polygon contains a set of vertices. Meshes and groups can join in groups. For better understanding, take a look at a 3D Lego model:

3D Models in Tableau
3D Models in Tableau

usemtl Color_006 in the code fragment above is a material name, which represents a texture in the 3D model. There are no textures in Tableau, but we can get the data and represent it as a color.

Thus, the .OBJ format looks like a nesting doll with a few levels of geometrics figures. The format also contains other information about edges, normals, lighting etc. We won’t use those in Tableau, so we will filter it.

Note: The full .OBJ specification you can find here

Many models are available in 3D Warehouse and you can download them as a SketchUp file (.SKP). The Desktop version of SketchUP Pro can export .SKP file to .OBJ file. Please note, that SketchUP Pro is not free but you can try it (trial period is 30 days). 

Many other sites also allow you to download OBJ files directly.

Using SketchUP Pro, you can remove all unnecessary polygons. I would recommend to center you model with center in (0,0,0). Then you can export the project as .OBJ file. Having the .OBJ file, we can convert it to data acceptable for Tableau.

4. How to get data from .OBJ format and upload it to Tableau

The .OBJ format is in sequential order, so it does not number the vertices, faces or meshes. Hence we need to numerate each part of it, as we did with the STL file. Like the STL file, I used a python script, but we can use Excel also. The goal will be to create four files:

–         v.csv (vertices)

–         f.csv (faces)

–         g.csv (meshes/groups)

–         color.csv (colors)

If you do not need colors and groups (meshes) for your model in Tableau, you can create only v.csv and f.csv.


Text file for faces looks like this, where there are columns separated by spaces:

1 f 1/1/1 2/2/1 3/3/1 4/4/1 2 f 2/3/2 1/4/2 5/5/2 6/6/2 3 f 1/7/3 4/3/3 7/6/3 5/8/3 4 f 3/3/4 8/6/4 7/8/4 4/7/4 5 f 8/6/5 3/3/5 2/4/5 6/5/5 6 f 7/7/6 8/3/6 6/2/6 5/9/6 7 f 9/4/1 10/3/1 4/2/1 3/1/1

You can upload your .OBJ file to Excel and make transformation there:

  1. Delete rows without ‘f’ in first column
  2. Delete column with ‘f’
  3. Add a column, numerating rows
  4. Add field names to the columns

After data transforming you will have this:

Note that you should name the columns 1,2,3… as maximum polygons in a row.


Upload your .OBJ file to Excel and make transformation similarly to the faces file. Result should look something like this:

Uploading the data to Tableau

1.      Connect to the f.csv (or f.xlsx) file

2.      Pivot columns from 1 to last 14 (in my case) column:

3.      Create inner join with v.txt (or v.xlsx) file using a join clause on the left and Vertice_id on the right:

INT(SPLIT([Pivot Field Values],’/’,1)) and Vertice_id

Congratulations! You have all necessary data to make a polygonal model:

  1. Create the same rotation formulas and parameters as in .STL
  2. Create a view like shown below, using ‘Pivot Field Names’ as a Path. ‘Pivot Field Names’ here is a number of vertex in a face.
3D Models in Tableau

Now you have a monochrome 3D polygon model. You should sort polygons using a painting algorithm as I described in the .STL section.

Color and groups

To address the color and groups, we’re going to leverage some of the new analytical functions of Tableau Prep. In the example below, I’ll use Tableau Prep 2020.1.

We can use RANK and RANK_DENSE functions. Unlike Tableau Desktop, these functions are not really table calculations and they have a different syntax. The functions in Tableau Prep return ranks of values in any column.

My flow does the following:

1.      Keeps only rows with prefixes ‘usemtl’ (colour) and ‘f’ (faces)

2.      Create a calculation for rank: { ALONG [Row Number Field] ASC : RANK() }


We’re going to use textures to specify the color. Rows describing textures start with ‘usemtl’ in an .OBJ file. All faces after the ‘usemtl’ string have the same color so we need find all polygons after the ‘usemtl’ row and assign them the same color. This is a bit harder than operations with vertices and faces but it can be done in Excel. As Tableau Prep has the new functions mentioned above, let’s use them.  

1.      Connect Prep to your your .OBJ file (as txt).

2.      Filter out any columns that do not have ‘f’ or ‘usemtl’ in the first column.

3.      Add a calculation: { ALONG [Row Number Column] ASC : RANK() } (See a picture below). ‘ASC’ defines an ascending order. This calculation makes a new numeration of rows returning ranks of row number column.

4.      Remove unnecessary columns leaving only 3 columns (Rank, #, Alias)

5.      Add two columns ‘Face Num Rank’ and ‘Color’ as shown below.

6.      Create a calculated field, ‘Face Id Raw’

{ ALONG [Face Num Rank] ASC : RANK_DENSE() }

The calculation ‘Face Id Raw’ returns ‘Face_id’+1. We can’t use RANK() here because RANK() assigns 1 to all ‘null’ values and returns 275 in our case, so we use RANK_DENSE here.

Compare the functions below:


7.      Create a calculated field, ‘Face_id’

[Face Num Raw]-1

8.      Keep only 3 fields, Face_Id, Rank, Color

9.      Export the data to .csv

10.      Open .csv in Excel. Sort ‘Rank’ column in ascending order:

11.      Fill empty cells in the ‘Color’ column. Choose the column, press ‘fn+f5’ in Windows, click on ‘Blanks’ in an opened dialogue window and press ‘Ok’. After choosing all empty cells in the column write ‘=C2’ in a function shelf and press ‘Ctrl+Enter’

12.      You will get a data set:

Save it and upload to your project in Tableau

13.      Make an Inner Join

Adding ‘Color’ field to color card will give you this:

3D Models in Tableau

Adding Groups

Our groups data set will be prepared similarly to the color data set except you should work with ‘g’ and ‘f’ rows instead of ‘usemtl’ and ‘f’.

Joining previous data sets with Groups in Tableau we will have a ‘Group’ field.

The groups are needed only if you would like to filter some parts of your viz. An example might be filtering the Lego bricks in order to emulate each step of assembly.

And the final viz:

3D Models in Tableau

There is a video showing assembling the house step by step:

Note: I’ve written an article ‘Creating video with Tableau and software robots‘ that describes such video creating process

See also other .OBJ 3D models in Tableau: A Helicopter and A Ship made with lines.

5. A Polygon Order Problem

We’ll need to tell Tableau how to draw the polygons in order to ensure that polygons in the front are actually brought to the front (this is called the Z-Order). To do this, we need to create a calculation. A simple approach would be to to use z_rotation calculation described above in .STL models. But, the rotation can cause some problems with this approach, leading to overlapped polygons. For example, see below. We can see wood beams above the roof but it should be below the roof.

‘Z_axis’ polygon sorting

3D Models in Tableau

Custom calculation for polygon sorting

3D Models in Tableau

 To address this problem I used a calculated field to bring the roof closer to avoid the effect:

[Color] =‘_1’ – is a roof color here. Also there are some other polygons and groups were brought closer or further to minimize the problem.

I couldn’t find a universal sorting method, so I had to use the workaround above. If you create your own model, please be aware that you may run into similar issues.

Full viz: 

3D Models in Tableau


3D Models are not a common way of using Tableau, but they can be a great way to explore Tableau’s capabilities and deepen your knowledge of the platform. I believe we will continue to see people discovering new ways to create 3D models and I hope this blog encourages members of Tableau community to create 3D vizzes. Personally I’m thinking about how I might create a 3D basketball court with ball’s trajectories, etc. I think it’s possible with Tableau!

A man showing a 3D bar chart diagram

This article explains how we can create a 3D bar chart in Tableau. As we all know that, Tableau doesn’t support 3d graphs because they aren’t consistent with best practices for presenting data in a way that it can be accurately understood. Studies have shown that 3D Charts are less accurate than other visualization types, and Tableau has a strong bias towards accuracy in presentation because no one finds 3D bars, 3D pies etc. analytically useful.I think everyone agrees here that they just weren’t built in because they tend to distort more than engage. On the contrary they make the charts harder to read with no real benefit. So many Viz Gurus advised not to use 3D charts in tableau.This post is just to extend the capability of Tableau. No one is asking you to use this 3D chart until you can convince your end user. 3D charts are only misleading if you cannot display them in a 3D visualization environment. The below article is inspired by great Viz guru and our very favorite Zen master Adam E McCannrecent work. For more Inspiration,do not forget to check Bora Beran approach on “Going 3D with Tableau”

Steps to Reproduce:

This tutorial is entirely inspired by Adams #MakeoverMonday week 11 Work – The Likelihood of Orgasm . I’m excited to share what he had done and more interestingly how he had done.

Step 1: Introduction

For creating a 3D surface plot that represents the relationship between two variables, we need to rearrange the data Set. We want to create a bar chart as per the below image.

3D diagram of Bar chart in Tableau

Restructuring of the data requires some understanding. The above mentioned diagram is basically divided into 8 segments. Refer the below image.

Marks on 3D bar chart

Step 2: Data Preparation

Duplicate the data 8 times so that we can enough marks which help us in generating the 3D chart.

Step 3: Calculation for Bar

In our 3D bar Chart diagram, we have created an numeric discrete Axis base – 1,2,3 and 4.Time has come to create a compact discrete axis via Calculated Field which the Bar chart will use.

3D bar chart is basically a combination of the Tableau Bar chart and shape. So if you see the below diagram highlighted in yellow color, ID 3 and ID 7 is being used for Bar charts. We will be using the same Id’s in our calculated Field.

Calculation Using ID 3 and ID 7

Step 4: Calculation for Shapes

Similarly, create another calculation for shapes. ID 4 and ID 8 are being used as “Top” shapes and ID 2 and ID 6 are used as “Bottom” Shapes. But there’s a catch here,ID 2 and ID 6 are below the Zero axis.We need to take negative values which should go towards – Y axis.

Calculation Using ID 4 and ID 8

Step 5 : Build the worksheet

Add Type, Gender and Y axis on Column shelf and Adjusted Likelihood Bar and Adjusted Likelihood shapes on row shelf.

Row and Column  in tableau

Under [Adjusted Likelihood Bar], Put ID field on color marks card and add the required Colors by following the perspective technique like (Lighter to Darker shade) so that it generates a 3D look.

Similarly, Under [Adjusted Likelihood Shape], Put ID field on shape marks card and assigned a proper shape like below.

Selecting Shapes from tableau Shapes Pallette

Final Step : Creating 3D Chart

Perform the dual axis operation and synchronize the axis. Define a proper Background color and add it into dashboard. You final result will look like the below image.

3D bar Chart in tableau

I hope you enjoyed the post ,please don’t forget to share this Article with others on Facebook, Twitter, LinkedIn and Whatsapp ,as it will help them and make my countless hours of work count. If you have any questions please do not hesitate to contact me on twitter (@rajvivan) or LinkedIn (@rajvivan)


Join our list

Subscribe to our mailing list and get interesting stuff and updates to your email inbox.

Thank you for subscribing.

Something went wrong.

Rajeev Pandey

I'm Rajeev,2 times Tableau Zen Master, 4 times Tableau Public Ambassador, Tableau Featured Author, and Data Evangelist from India. I am a multidisciplinary Udacity certified designer working in data visualization, interaction design, and innovation and have a passion for designing robust and scalable solutions for high-impact business problems.

  1. Nose piercing blackheads
  2. Bryant vs ruud
  3. Samsung s10 notifications
  4. Freedom rock cds
  5. Continental cycling tires

We previously had an article about creating Shaped Bar Charts in Tableau; in that previous tutorial, we used data densification to create a different look and feel for our bar charts. In this tutorial, we are going to explore using 3D shapes to create 3D Bar Charts in Tableau.

Note: 3D data visualisation is not considered best practice for data visualisations, however, I have seen these used to create interesting and engaging infographics or used for infotainment.


We will start by loading the following data into Tableau.

Once your data is loaded into Tableau, right-click on the data source and click on Edit Data Source… with the Data Source Editor open, paste the following:

You should get an error as there is no joining column, however, click on Add new join clause, go to Create Join Calculation, type 1 and click OK. Do this for the right-hand side as well. Ensure that you have Inner join selected and you should see the following:

Note: we need additional records as we are going to be drawing shapes and using densification to get more points on our canvas. For more information, check out our article on Data Densification.

Calculated Fields

With our data set loaded into Tableau, we are going to create the following Bin and Calculated Fields:

Path (bin)

  • Right-click on Path, go to Create and select Bins…
  • In the Edit Bins dialogue window:
    • Set New field name to Path (bin).
    • Set Size of bins to 1.
    • Click Ok.




With this done, let us start creating our data visualisation.


We will now build our first worksheet:

  • Change the Mark Type to Shape.
  • Drag Country onto the Columns Shelf.
  • Drag Country onto the Marks Shelf.
  • Drag Path (bin) onto Columns Shelf.
    • Right-click on this object and ensure that Show Missing Values is selected.
    • Drag this object onto the Detail Mark.
  • Drag the Rows Object onto the Rows Shelf.
    • Right-click on this object, go to Compute Using and select Path (bin).

If all goes well, you should see the following:

We have now created our Shaped Bar Chart, but now we will need to download, unzip, and add copy the following shapes to our Shapes directory. If you have not done this before, check out our article on Custom Shapes.


Note: These are cube objects that I have created and colored using Material Design colors.

We these shapes downloaded and ready, we will now adjust the cosmetics on our data visualisation:

  • Hide the Axis Headers.
  • Set Grid Lines to None.
  • Set Zero Lines to None.
  • Set Axis Rulers to None.
  • Assign our Cube Shapes to each Country.
  • Click on the 254 nulls and select Filter.
  • Add a Discrete Label.

If all goes well, you should now have the following final data visualisation:

Exercise: Explore with our own objects, and let me know what you come up with.

and boom, we are done! I hope you enjoyed this tutorial, and as always, you can find this data visualisation on Tableau Public at!/vizhome/ShapedBarCharts3D/ShapedBarChart3D


I hope you all enjoyed this article as much as I enjoyed writing it and as always do share the love. Do let me know if you experienced any issues recreating this Visualisation, and as always, please leave a comment below or reach out to me on Twitter @Tableau_Magic. Do also remember to tag me in your work if you use this tutorial.

If you like our work, do consider supporting us on Patreon, and for supporting us, we will give you early access to tutorials, exclusive videos, as well as access to current and future courses on Udemy:

Also, do be sure to check out our various courses:

Toan Hoang

Toan Hoang

Toan Hoang, Tableau Zen Master 2020, has over 15 years of experience in Business Intelligence, Data Management, Big Data, Data Lakes, Internet of Things (IoT), Data Visualisation and the Data Analytics space; the last six years has been dedicated to delivering end-to-end solutions using Tableau.


At first I didnt want to pick up the pipe, but then, giggling, I shouted at Stas and reached for the phone. Hello dear. What is there. I'm in the shop. Can I still take pita bread.

3d chart tableau

I moaned from the buzz, and at this time Mikhail managed to undress and masturbate himself, looking at me and Zhanna. - You feel good. Jeanne asked and licked my head. - Very good.

How to create Pie charts in Tableau and the available variations.

" I said that I really need money and briefly devoted her to my problems. then she asked me what I can do and what professions I own. Back in the army, I was known as a good carpenter and locksmith and did well any job I took on. the woman listened carefully to my story and said that she and her husband wanted to find a worker in their house who would look. After the house and garden, the pay would not be big, but I had a temporary hut with two rooms and meals at their expense.

You will also like:

Her name is Bess. She paid with two purest diamonds to be taken to Squazdot. The big man laughed: You see, Garcia, and you said that I would miss this voyage. First, one sneaks aboard in the port, and then the other arrives. And everyone needs to go to Squazdot.

564 565 566 567 568