我想在www.example.com中创建2D散点图plotly.py,并将其导出为具有正方形纵横比的静态. svg文件。更具体地说,我想让轴以屏幕为单位变成正方形(类似于matplotlib的这个问题:Matplotlib scale axis lengths to be equal)。有没有什么方法可以用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")
Output: example plot with one trace and fixed width and height
然而,如果我有多个痕迹并添加一个图例,我最终会得到一个扭曲的情节:
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")
Output: example plot with two traces and a legend
我认为可以通过layout.scene.aspectmode="cubic"
设置来实现3D绘图,但我可以为2D绘图找到类似的设置。有没有办法让我的图自动看起来像这样:Desired Output没有重新调整图的宽度/高度,每次关于我的传奇项目的长度?
1条答案
按热度按时间wribegjk1#
我也遇到过类似的问题…看到这个之后:https://github.com/plotly/plotly.py/issues/70
我解决了它如下:
不确定它是否会为多重痕迹和传说工作。