Javascript 是否可以在plot.ly 3D散点图上手动设置比例和刻度?

Javascript 是否可以在plot.ly 3D散点图上手动设置比例和刻度?,javascript,plotly,Javascript,Plotly,我有一个基本的plot.ly三维散点图,在三维中指定了各种路径。在阅读了三天的文档之后,我仍然没有找到定义轴的刻度间隔的方法。它似乎是根据我的数据自动生成的,这是我不想要的。实际上,我需要我的三个轴以1:1:1的比例,这可能吗 <style>html, body { height: 100%; }</style> <div id="myDiv" style="width: 100%; height: 100%"></div> <!-- La

我有一个基本的plot.ly三维散点图,在三维中指定了各种路径。在阅读了三天的文档之后,我仍然没有找到定义轴的刻度间隔的方法。它似乎是根据我的数据自动生成的,这是我不想要的。实际上,我需要我的三个轴以1:1:1的比例,这可能吗

<style>html, body { height: 100%; }</style>
<div id="myDiv" style="width: 100%; height: 100%"></div>

<!-- Latest compiled and minified plotly.js JavaScript -->
<script type="text/javascript" src="https://cdn.plot.ly/plotly-latest.min.js"></script>

<script>
var data = [
  {
    x: [-886, -719],
    y: [-4785, -5192],
    z: [527, 501],
    type: 'scatter3d'
  },
  {
    x: [-1782, -92],
    y: [1740, -5172],
    z: [18, 252],
    type: 'scatter3d'
  },
  {
    x: [3844, -450],
    y: [35, -5185],
    z: [20, 219],
    type: 'scatter3d'
  },
  {
    x: [2770, 761],
    y: [2360, -5122],
    z: [246, 96],
    type: 'scatter3d'
  },
  {
    x: [3800, 546],
    y: [-3419, -5215],
    z: [57, 311],
    type: 'scatter3d'
  },
  {
    x: [-340, 775],
    y: [-3893, -5189],
    z: [573, 135],
    type: 'scatter3d'
  },
  {
    x: [-3141, -41],
    y: [3677, -5205],
    z: [18, 383],
    type: 'scatter3d'
  },
  {
    x: [19, -546],
    y: [261, -5181],
    z: [74, 93],
    type: 'scatter3d'
  },
  {
    x: [3, 789],
    y: [394, -5165],
    z: [112, 421],
    type: 'scatter3d'
  }
];
var layout = {
  // height: 700,
  // width: 700,
  xaxis: {
    range: [-5000, 5000]
  },
  yaxis: {
    range: [-5000, 5000]
  }
};
Plotly.newPlot('myDiv', data, layout);
</script>
html,正文{高度:100%;}
风险值数据=[
{
x:[-886,-719],
y:[-4785,-5192],
z:[527501],,
类型:“scatter3d”
},
{
x:[-1782,-92],
y:[1740,-5172],
z:[18252],
类型:“scatter3d”
},
{
x:[3844,-450],
y:[35,-5185],
z:[20219],,
类型:“scatter3d”
},
{
x:[2770761],
y:[2360,-5122],
z:[24696],,
类型:“scatter3d”
},
{
x:[3800546],
y:[-3419,-5215],
z:[57311],
类型:“scatter3d”
},
{
x:[-340775],
y:[-3893,-5189],
z:[573135],
类型:“scatter3d”
},
{
x:[-3141,-41],
y:[3677,-5205],
z:[18383],
类型:“scatter3d”
},
{
x:[19,-546],
y:[261,-5181],
z:[74,93],,
类型:“scatter3d”
},
{
x:[3789],
y:[394,-5165],
z:[112421],,
类型:“scatter3d”
}
];
变量布局={
//身高:700,
//宽度:700,
xaxis:{
范围:[-50005000]
},
亚克斯:{
范围:[-50005000]
}
};
Plotly.newPlot('myDiv',数据,布局);

代码演示:

我对javascript plotly api不太熟悉,这个答案是用python编写的。希望这对你的处境也有帮助

如果我正确理解了您的问题,您需要为轴设置tick模式,并且根据您选择的模式,您还需要设置NTick;勾选0和dticks;或滴答声

以下内容摘自:一个难以有效搜索但非常有用的页面。页面的javascript版本为:

tickmode(枚举:“自动”|“线性”|“数组”) 设置此轴的刻度模式。如果为“自动”,则通过
nticks
设置刻度数。如果是“线性”,则记号的位置由起始位置
tick0
和记号步
dtick
(如果提供了
tick0
dtick
,则“线性”是默认值)。如果为“数组”,则通过
tickvals
设置记号的位置,记号文本为
ticktext
。(“如果提供了
tickvals
,则数组”是默认值)


这同样适用于python,但在场景选项中,有一种方法可以使用下面的xaxis(或yaxis或zaxis)示例代码中的range(list)选项设置x、y或z轴的范围

 scene = dict(xaxis=dict(gridcolor='rgb(0, 0, 0)',
                                    zerolinecolor='rgb(0, 0, 0)',
                                    showbackground=False,
                                    range = (minX,maxX)),
                        yaxis=dict(gridcolor='rgb(0, 0, 0)',
                                   zerolinecolor='rgb(0, 0, 0)',
                                   showbackground=False,
                                   range = (minY, maxY)),
                        zaxis=dict(gridcolor='rgb(0, 0, 0)',
                                    zerolinecolor='rgb(0, 0, 0)',
                                    showbackground=False,
                                   range = (minZ, maxZ)))
 fig['layout'].update(scene)

这是文档:对于java,当然可以。这些信息可以在如何为3d图表设置轴的格式中看到

代码方面,您想要的是这样的东西

var layout = {
  scene:{
     aspectmode: "manual",
   aspectratio: {
     x: 1, y: 1, z: 1,
    },
   xaxis: {
    nticks: 100,
    range: [-5000, 5000],
  },
   yaxis: {
    nticks: 100,
    range: [-5000, 5000],
  },
   zaxis: {
   nticks: 100,
   range: [-5000, 5000],
  }},
};