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. Try Plotly Studio 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);
  
</script>\n</head>\n\n<body>\n\t<div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>\n</body>","js":"function getrandom(num , mul) \n\t{\n var value = [ ];\n for(i=0;i<=num;i++)\n {\n var rand = Math.random() * mul;\n value.push(rand);\n }\n return value;\n }\n\n\nvar data=[\n {\n opacity:0.4,\n type: 'scatter3d',\n x: getrandom(50 , -75),\n y: getrandom(50 , -75),\n z: getrandom(50 , -75),\n },\n {\n opacity:0.5,\n type: 'scatter3d',\n x: getrandom(50 , -75),\n y: getrandom(50 , 75),\n z: getrandom(50 , 75),\n },\n \t{\n opacity:0.5,\n type: 'scatter3d',\n x: getrandom(50 , 100),\n y: getrandom(50 , 100),\n z: getrandom(50 , 100),\n }\n];\nvar layout = {\n scene:{\n\t aspectmode: \"manual\",\n aspectratio: {\n x: 1, y: 0.7, z: 1,\n },\n xaxis: {\n nticks: 9,\n range: [-200, 100],\n },\n yaxis: {\n nticks: 7,\n range: [-100, 100],\n },\n zaxis: {\n nticks: 10,\n range: [-150, 100],\n }},\n};\nPlotly.newPlot('myDiv', data, layout);\n "}">
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);
</script>\n</head>\n\n<body>\n\t<div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>\n</body>","js":"function getrandom(num , mul) \n\t{\n\t var value = [ ]\n\t\tvar i;\n\t\tfor(i=0;i<=num;i++)\n\t {\n\t\t rand = Math.random() * mul;\n\t value.push(rand);\n\t }\n\t\treturn value;\n\t}\n\nvar i;\ntraces = [];\nnames = ['cube', 'data', 'auto', 'manual'];\nfor (i=1; i<5; i++){\n\ttraces.push({\n\t\tx: getrandom(20, 4),\n\t\ty: getrandom(20, 3),\n\t\tz: getrandom(20, 5),\n\t\topacity:0.5,\n\t\tmode: \"markers\",\n\t\ttype: \"mesh3d\",\n\t\tscene: \"scene\" + i,\n\t\tname: names[i-1]\n\t\t}\n\t)\n}\n\nvar layout = {\n\tscene:{\n\t\taspectmode:'cube',\n\t\tdomain:{row:0, column:0}\n\t},\n\tscene2:{\n\t\taspectmode:'data',\n\t\tdomain:{row:1, column:0}\n\t},\n\tscene3:{\n\t\taspectmode:'auto',\n\t\tdomain:{row:0, column:1}\n\t},\n\tscene4:{\n\t\taspectmode:'manual',\n\t\taspectratio: {x:1, y:1, z:2},\n\t\tdomain: {row:1, column:1}\n\t},\n\tgrid:{\n\t\tpattern: 'independent',\n\t\trows:2,\n\t\tcolumns:2\n\t},\n\n};\n\nPlotly.newPlot('myDiv', traces, layout);\n"}">
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);
</script>\n</head>\n\n<body>\n\t<div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>\n</body>","js":"function getrandom(num , mul) \n\t{\n\t var value = [ ];\n\t for(i=0;i<=num;i++)\n\t {\n\t var rand = Math.random() * mul;\n\t value.push(rand);\n\t }\n\t return value;\n\t}\n\n\nvar data=[\n {\n opacity:0.4,\n type: 'scatter3d',\n x: getrandom(50 , -75),\n y: getrandom(50 , -75),\n z: getrandom(50 , -75),\n },\n];\nvar layout = {\n scene:{ \n xaxis: {\n\t ticktext:['H20','C02','O2'],\n\t tickvals:[-30, -45, -65, -10]\n },\n yaxis: {\n \t\tnticks: 5,\n \t\ttickfont:\n \t\t{\n \t\t color:'green',\n \t\t family:'Old Standard TT, serif',\n \t\t size: 14\n \t\t},\n \t\tticksuffix:'$'\n \t\t},\n zaxis: {\n ticks: 'outside',\n tick0: 0,\n tickwidth: 4}},\n};\nPlotly.newPlot('myDiv', data, layout);\n"}">
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);
</script>\n</head>\n\n<body>\n\t<div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>\n</body>","js":"function getrandom(num , mul) \n\t{\n\t var value = [ ];\n\t for(i=0;i<=num;i++)\n\t {\n\t var rand = Math.random() * mul;\n\t value.push(rand);\n\t }\n\t return value;\n\t}\n\nvar data=[\n {\n opacity:0.4,type: 'scatter3d',\n x: getrandom(50 , 75),\n y: getrandom(50 , 75),\n z: getrandom(50 , 75),\n mode:'markers'\n },\n\t{\n\t opacity: 0.5,\n\t type: 'scatter3d',\n\t x: getrandom(75 , 75),\n\t y: getrandom(75 , 75),\n\t z: getrandom(75 , 75),\n\t mode:'markers'\n\t},\n\t{\n\t opacity: 0.5,\n\t type: 'scatter3d',\n\t x: getrandom(75 , 100),\n\t y: getrandom(75 , 100),\n\t z: getrandom(75 , 100),\n\t mode:'markers'\n\t}\n];\nvar layout = {\n scene:{\n\txaxis: {\n\t backgroundcolor: \"rgb(200, 200, 230)\",\n\t gridcolor: \"rgb(255, 255, 255)\",\n\t showbackground: true,\n\t zerolinecolor: \"rgb(255, 255, 255)\",\n\t}, \n yaxis: {\n backgroundcolor: \"rgb(230, 200,230)\",\n gridcolor: \"rgb(255, 255, 255)\",\n showbackground: true,\n zerolinecolor: \"rgb(255, 255, 255)\"\n }, \n zaxis: {\n backgroundcolor: \"rgb(230, 230,200)\",\n gridcolor: \"rgb(255, 255, 255)\",\n showbackground: true,\n zerolinecolor: \"rgb(255, 255, 255)\"\n }}\n};\nPlotly.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 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);
</script>\n</head>\n\n<body>\n\t<div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>\n</body>","js":"function getrandom(num , mul) {\n\tvar value = [ ];\n\tfor(i=0;i<=num;i++)\n\t{\n\t var rand = Math.random() * mul;\n\t value.push(rand);\n\t}\n\treturn value;}\n\nvar trace1 = {\n\ttype:'mesh3d',\n\tx: getrandom(1000,200), y: getrandom(1000,300), z: getrandom(1000,150),\n\tcolor: 'lightblue',};\n\nvar trace2 = {\n\ttype:'mesh3d',\n\tx: getrandom(1000,200), y: getrandom(1000,300), z: getrandom(1000,150),\n\tcolor: 'pink'};\n\nvar layout = {\n\tscene: {\n\t\txaxis: {\n\t\t\ttitle: {\n\t\t\t\ttext: 'X AXIS TITLE'\n\t\t\t}\n\t\t},\n\t\tyaxis: {\n\t\t\ttitle: {\n\t\t\t\ttext: 'Y AXIS TITLE'\n\t\t\t}\n\t\t},\n\t\tzaxis: {\n\t\t\ttitle: {\n\t\t\t\ttext: 'Z AXIS TITLE'\n\t\t\t}\n\t\t}\n\t},\n\tautosize: false,\n\twidth: 550,\n\theight: 500,\n\tmargin: {\n\t l: 0,\n\t r: 0,\n\t b: 50,\n\t t: 50,\n\t pad: 4\n\t},\n}\n\nPlotly.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);
</script>\n</head>\n\n<body>\n\t<div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>\n</body>","js":"function getrandom(num , mul) \n {\n var value = [ ];\n for(i=0;i<=num;i++)\n {\n var rand = Math.random() * mul;\n value.push(rand);\n }\n return value;\n }\nvar data = [\n {\n x: getrandom(20, 4), \n y: getrandom(20, 3), \n z: getrandom(20, 5),\n opacity:0.5,\n mode: \"markers\",\n type: \"scatter3d\",\n scene: \"scene1\",\n name: \"Lower the view point\"\n },\n {\n x:getrandom(20, 4), \n y:getrandom(20, 3), \n z:getrandom(20, 5),\n opacity:0.5,\n mode: \"markers\",\n type: \"scatter3d\",\n scene: \"scene2\",\n name: \"x-z plane\"\n },\n {\n x:getrandom(20, 4), \n y:getrandom(20, 3), \n z:getrandom(20, 5), \n opacity:0.5,\n mode: \"markers\",\n type: \"scatter3d\",\n scene: \"scene3\",\n name: \"y-z plane\"\n },\n {\n x:getrandom(10, 4), \n y:getrandom(10, 3), \n z:getrandom(10, 5), \n opacity:0.5,\n mode: \"markers\",\n type: \"scatter3d\",\n scene: \"scene4\",\n name: \"View from above\"\n },\n {\n x:getrandom(20, 4), \n y:getrandom(20, 3), \n z:getrandom(20, 5), \n opacity:0.5,\n mode: \"markers\",\n type: \"scatter3d\",\n scene: \"scene5\",\n name: \"Zooming in\"\n },\n];\nvar layout = {\n scene1: {\n domain: {\n x: [0.00, 0.33], \n y: [0.5, 1]\n },\n camera: {\n center: {\n x: 0, y: 0, z: 0 }, \n eye: { \n x: 2, y: 2, z: 0.1 }, \n up: {\n x: 0, y: 0, z: 1 }\n },},\n \n scene2: {\n domain: {\n x: [0.33, 0.66], \n y: [0.5, 1.0]\n },\n camera: {\n center: {\n x: 0, y: 0, z: 0}, \n eye: { \n x:0.1, y:2.5, z:0.1}, \n up: {\n x: 0, y: 0, z: 1}\n },},\n \n scene3: {\n domain: {\n x: [0.66, 0.99], \n y: [0.5, 1]\n },\n camera: {\n center: {\n x: 0, y: 0, z: 0}, \n eye: { \n x:2.5, y:0.1, z:0.1}, \n up: {\n x: 0, y: 0, z: 1}\n },}, \n \n scene4: {\n domain: {\n x: [0.15, 0.5], \n y: [-0.25, 0.4]\n },\n camera: {\n center: {\n x: 0, y: 0, z: 0}, \n eye: { \n x:0.1, y:0.1, z:2.5}, \n up: {\n x: 0, y: 0, z: 1}\n },},\n \n scene5: {\n domain: {\n x: [0.62, 0.7], \n y: [-0.2, 0.4]\n },\n camera: {\n center: {\n x: 0, y: 0, z: 0}, \n eye: { \n x:0.1, y:0.1, z:1}, \n up: {\n x: 0, y: 0, z: 1}\n },},\n};\nPlotly.newPlot('myDiv', data, layout);"}">