绘制控制每个轴的相对长度

Plotly control relative lengths of each axis

也许我错过了文档中的某些内容,但是如何控制每个轴的相对长度,以便绘图是一个正方形? 我基本上是在寻找 matlabs

的等价物
pbaspect([1 1 1])

这是当前图片

我想把它变成这个(忽略额外的轴标签):

我通过手动设置图像大小进行了更改,但必须有更简单的方法来完成。

fig.update_yaxes(scaleanchor = "x",scaleratio = 1,)

不起作用,因为轴使用不同的数字。 我很高兴收到任何建议。

设置高度宽度一样简单

import plotly.graph_objects as go
import numpy as np

go.Figure(go.Scatter(x=np.linspace(0,100,1000), y=np.random.uniform(0,5,1000), mode="markers"), layout={"height":400, "width":400})

方法 2 - 使用 HTML 视口高度/宽度

  • css width same as height可以使用技巧
  • 创建一个 <div> 大小相同的视口单位。在这个大小的 <div>
  • 中嵌入 plotly html
import plotly.express as px
import io

buffer = io.StringIO()

go.Figure(
    go.Scatter(
        x=np.linspace(0, 100, 1000),
        y=np.random.uniform(0, 5, 1000) * np.random.uniform(0, 1, 1000),
        mode="markers",
    )
).update_layout(margin={"t":0,"b":30,"l":0,"r":0}).write_html(buffer, full_html=False)


# use HTML techniques create a "square", NB height and width defined in same view port units
html = '<div style="width: 70vh; height: 70vh;">' + buffer.getvalue().encode().decode() + "</div>"
with open("example.html", "w") as f: f.write(html)

# not required if not running in jupyter
from IPython.core.display import display, HTML
HTML(html)