我想在plotly.py 中创建 2D 散点图,并将其导出为具有方形纵横比的静态 .svg 文件。更具体地说,我想让轴以屏幕单位为正方形(类似于这个 matplotlib 问题:Matplotlib 缩放轴长度相等)。 有什么方法可以使用plotly 实现类似的效果吗? (请注意,我的 x 和 y 数据的比例不同)
我已经尝试简单地将图形宽度和高度设置为相等的值,如果我只有一条迹线并且没有图例,这或多或少可以正常工作。
import numpy as np
import plotly.graph_objects as go
np.random.seed(42)
fig = go.Figure()
fig.add_trace(go.Scatter(
x=np.random.uniform(0, 1, 50),
y=np.random.randint(1, 100, 50),
mode='markers',
))
fig.update_layout(width=500, height=500)
# NOTE: Static image generation in plotly requires Kaleido (pip install -U kaleido)
fig.write_image("example.svg")
但是,如果我有多个痕迹并添加图例,我最终会得到一个扭曲的情节:
import numpy as np
import plotly.graph_objects as go
np.random.seed(42)
fig = go.Figure()
fig.add_trace(go.Scatter(
x=np.random.uniform(0, 1, 50),
y=np.random.randint(1, 100, 50),
mode='markers',
name="SomeLongTraceLabel1"
))
fig.add_trace(go.Scatter(
x=np.random.uniform(0, 1, 50),
y=np.random.randint(1, 100, 50),
mode='markers',
name="SomeLongTraceLabel2"
))
fig.update_layout(width=500, height=500)
# NOTE: Static image generation requires Kaleido (pip install -U kaleido)
fig.write_image("example.svg")
我认为可以通过
layout.scene.aspectmode="cubic"
设置来实现 3D 绘图,但我可以找到类似的 2D 绘图设置。
有什么方法可以让我的绘图自动看起来像这样:,而无需每次根据图例项的长度重新调整图形宽度/高度?
我遇到了类似的问题......看到这个后:https://github.com/plotly/plotly.py/issues/70
我解决如下:
import plotly.express as px
fig = px.scatter(df, x='X', y='Z')
fig.update_xaxes(constrain='domain')
fig.update_yaxes(scaleanchor= 'x')
不确定它是否适用于多个痕迹和图例。