3D Axes in JavaScript

How to format axes for 3d charts.


Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Sign up for early access now.

function getrandom(num , mul) 
	{
   var value = [ ];
   for(i=0;i<=num;i++)
   {
    var rand = Math.random() * mul;
    value.push(rand);
   }
   return value;
  }


var data=[
    {
     opacity:0.4,
     type: 'scatter3d',
     x: getrandom(50 , -75),
     y: getrandom(50 , -75),
     z: getrandom(50 , -75),
    },
    {
     opacity:0.5,
     type: 'scatter3d',
     x: getrandom(50 , -75),
     y: getrandom(50 , 75),
     z: getrandom(50 , 75),
    },
  	{
     opacity:0.5,
     type: 'scatter3d',
     x: getrandom(50 , 100),
     y: getrandom(50 , 100),
     z: getrandom(50 , 100),
    }
];
var layout = {
  scene:{
	 aspectmode: "manual",
   aspectratio: {
     x: 1, y: 0.7, z: 1,
    },
   xaxis: {
    nticks: 9,
    range: [-200, 100],
  },
   yaxis: {
    nticks: 7,
    range: [-100, 100],
  },
   zaxis: {
   nticks: 10,
   range: [-150, 100],
  }},
};
Plotly.newPlot('myDiv', data, layout);
  
trace 0trace 1trace 2
function getrandom(num , mul) 
	{
	   var value = [ ]
		var i;
		for(i=0;i<=num;i++)
	   {
		 rand = Math.random() * mul;
	    value.push(rand);
	   }
		return value;
	}

var i;
traces = [];
names = ['cube', 'data', 'auto', 'manual'];
for (i=1; i<5; i++){
	traces.push({
		x: getrandom(20, 4),
		y: getrandom(20, 3),
		z: getrandom(20, 5),
		opacity:0.5,
		mode: "markers",
		type: "mesh3d",
		scene: "scene" + i,
		name: names[i-1]
		}
	)
}

var layout = {
	scene:{
		aspectmode:'cube',
		domain:{row:0, column:0}
	},
	scene2:{
		aspectmode:'data',
		domain:{row:1, column:0}
	},
	scene3:{
		aspectmode:'auto',
		domain:{row:0, column:1}
	},
	scene4:{
		aspectmode:'manual',
		aspectratio: {x:1, y:1, z:2},
		domain: {row:1, column:1}
	},
	grid:{
		pattern: 'independent',
		rows:2,
		columns:2
	},

};

Plotly.newPlot('myDiv', traces, layout);
function getrandom(num , mul) 
	{
	 var value = [ ];
	 for(i=0;i<=num;i++)
	 {
	  var rand = Math.random() * mul;
	  value.push(rand);
	 }
	 return value;
	}


var data=[
    {
     opacity:0.4,
     type: 'scatter3d',
     x: getrandom(50 , -75),
     y: getrandom(50 , -75),
     z: getrandom(50 , -75),
    },
];
var layout = {
  scene:{ 
    xaxis: {
	 ticktext:['H20','C02','O2'],
	 tickvals:[-30, -45, -65, -10]
  },
  yaxis: {
  		nticks: 5,
  		tickfont:
  		{
  		 color:'green',
  		 family:'Old Standard TT, serif',
  		 size: 14
  		},
  		ticksuffix:'$'
  		},
  zaxis: {
       ticks: 'outside',
       tick0: 0,
       tickwidth: 4}},
};
Plotly.newPlot('myDiv', data, layout);
function getrandom(num , mul) 
	{
	 var value = [ ];
	 for(i=0;i<=num;i++)
	 {
	  var rand = Math.random() * mul;
	  value.push(rand);
	 }
	 return value;
	}

var data=[
    {
     opacity:0.4,type: 'scatter3d',
     x: getrandom(50 , 75),
     y: getrandom(50 , 75),
     z: getrandom(50 , 75),
     mode:'markers'
    },
	{
	 opacity: 0.5,
	 type: 'scatter3d',
	 x: getrandom(75 , 75),
	 y: getrandom(75 , 75),
	 z: getrandom(75 , 75),
	 mode:'markers'
	},
	{
	 opacity: 0.5,
	 type: 'scatter3d',
	 x: getrandom(75 , 100),
	 y: getrandom(75 , 100),
	 z: getrandom(75 , 100),
	 mode:'markers'
	}
];
var layout = {
   scene:{
	xaxis: {
	 backgroundcolor: "rgb(200, 200, 230)",
	 gridcolor: "rgb(255, 255, 255)",
	 showbackground: true,
	 zerolinecolor: "rgb(255, 255, 255)",
	}, 
    yaxis: {
     backgroundcolor: "rgb(230, 200,230)",
     gridcolor: "rgb(255, 255, 255)",
     showbackground: true,
     zerolinecolor: "rgb(255, 255, 255)"
    }, 
    zaxis: {
     backgroundcolor: "rgb(230, 230,200)",
     gridcolor: "rgb(255, 255, 255)",
     showbackground: true,
     zerolinecolor: "rgb(255, 255, 255)"
    }}
};
Plotly.newPlot('myDiv', data, layout);
trace 0trace 1trace 2
function getrandom(num , mul) {
	var value = [ ];
	for(i=0;i<=num;i++)
	{
	 var rand = Math.random() * mul;
	 value.push(rand);
	}
	return value;}

var trace1 = {
	type:'mesh3d',
	x: getrandom(1000,200), y: getrandom(1000,300), z: getrandom(1000,150),
	color: 'lightblue',};

var trace2 = {
	type:'mesh3d',
	x: getrandom(1000,200), y: getrandom(1000,300), z: getrandom(1000,150),
	color: 'pink'};

var layout = {
	scene: {
		xaxis: {
			title: {
				text: 'X AXIS TITLE'
			}
		},
		yaxis: {
			title: {
				text: 'Y AXIS TITLE'
			}
		},
		zaxis: {
			title: {
				text: 'Z AXIS TITLE'
			}
		}
	},
	autosize: false,
	width: 550,
	height: 500,
	margin: {
	 l: 0,
	 r: 0,
	 b: 50,
	 t: 50,
	 pad: 4
	},
}

Plotly.newPlot('myDiv', [trace1,trace2], layout);
function getrandom(num , mul) 
  {
     var value = [ ];
     for(i=0;i<=num;i++)
     {
      var rand = Math.random() * mul;
      value.push(rand);
     }
    return value;
  }
var data = [
  {
    x: getrandom(20, 4), 
    y: getrandom(20, 3), 
    z: getrandom(20, 5),
    opacity:0.5,
    mode: "markers",
    type: "scatter3d",
    scene: "scene1",
    name: "Lower the view point"
  },
   {
    x:getrandom(20, 4), 
    y:getrandom(20, 3), 
    z:getrandom(20, 5),
    opacity:0.5,
    mode: "markers",
    type: "scatter3d",
    scene: "scene2",
    name: "x-z plane"
  },
  {
    x:getrandom(20, 4), 
    y:getrandom(20, 3), 
    z:getrandom(20, 5), 
    opacity:0.5,
    mode: "markers",
    type: "scatter3d",
    scene: "scene3",
    name: "y-z plane"
  },
   {
    x:getrandom(10, 4), 
    y:getrandom(10, 3), 
    z:getrandom(10, 5), 
    opacity:0.5,
    mode: "markers",
    type: "scatter3d",
    scene: "scene4",
    name: "View from above"
  },
   {
    x:getrandom(20, 4), 
    y:getrandom(20, 3), 
    z:getrandom(20, 5), 
    opacity:0.5,
    mode: "markers",
    type: "scatter3d",
    scene: "scene5",
    name: "Zooming in"
  },
];
var layout = {
    scene1: {
      domain: {
            x: [0.00,  0.33], 
            y: [0.5, 1]
        },
      camera: {
          center: {
                x: 0, y: 0, z: 0 }, 
          eye: { 
                x: 2, y: 2, z: 0.1 }, 
           up: {
                x: 0, y: 0, z: 1 }
        },},
  
    scene2: {
      domain: {
             x: [0.33,  0.66], 
             y: [0.5, 1.0]
            },
      camera: {
          center: {
                x: 0, y: 0, z: 0}, 
          eye: { 
                x:0.1, y:2.5, z:0.1}, 
          up: {
                x: 0, y: 0, z: 1}
        },},
  
  scene3: {
      domain: {
             x: [0.66,  0.99], 
             y: [0.5, 1]
            },
      camera: {
          center: {
                x: 0, y: 0, z: 0}, 
          eye: { 
                 x:2.5, y:0.1, z:0.1}, 
          up: {
                 x: 0, y: 0, z: 1}
    },},    
  
  scene4: {
      domain: {
             x: [0.15,  0.5], 
             y: [-0.25, 0.4]
            },
      camera: {
        center: {
              x: 0, y: 0, z: 0}, 
        eye: { 
              x:0.1, y:0.1, z:2.5}, 
        up: {
              x: 0, y: 0, z: 1}
    },},
  
  scene5: {
        domain: {
               x: [0.62,  0.7], 
               y: [-0.2, 0.4]
            },
      camera: {
        center: {
              x: 0, y: 0, z: 0}, 
        eye: { 
              x:0.1, y:0.1, z:1}, 
        up: {
              x: 0, y: 0, z: 1}
    },},
};
Plotly.newPlot('myDiv', data, layout);
Lower the view pointx-z planey-z planeView from aboveZooming in