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