防止 Plotly.py 动画中的颜色栏自动缩放

Prevent Autoscale on colorbar within Plotly.py animation

我有一个带有色阶和关联颜色条的 Plotly 动画。我想要做的是修复颜色条的范围并防止它在每一帧上都被重新缩放。我想看到的是我的数据“符合”或“超出预定义规范”的位置,但这不适用于在每一帧上工作的自动缩放。它随每一帧重新缩放,因此颜色条在一帧上可能从 -2 变为 -4,但在下一帧上相同的颜色范围在 0 到 -5 之间划分。

figA = px.scatter(dfAnime, x="Easting", y="Northing", animation_frame="shot",
    color='Depth',range_x=[np.min(dfAnime['Easting']),np.max(dfAnime['Easting'])],
    range_y=[np.min(dfAnime['Northing']),np.max(dfAnime['Northing'])],
    color_continuous_scale=[(0,'red'),(0.33,'orange'),(0.58,'green'),(0.83,'orange'),(1,'red')],
    range_color=[0,-6])
    
figA.layout.updatemenus[0].buttons[0].args[1]["frame"]["duration"]=100 # Turns off play/stop button
figA.update_yaxes(
    scaleanchor="x",
    scaleratio=1,
    exponentformat='none')
figA.update_xaxes(
    scaleanchor="x",
    scaleratio=1,
    exponentformat='none')
figA.update_layout(template="plotly_dark",title="Line  "+str(name),autoscale=False)           
#figA.show()
figA.write_html("C:/Users/client1/Desktop/anime.html")

我想将我的范围固定在 0 到 -6 之间(这些是我可能会看到的极端情况)。我以为我已经在上面的代码中完成了,但我认为 Autoscale 正在覆盖它。

我试过一些例子,我可以从中得出的结论是 range_color 工作正常。但是,您对 range_color 的论点是导致问题的原因。由于它是一个范围,因此以递增的方式定义它才是明智的,即 [0,-6] 不是正确的范围。相反,您应该使用 [-6,0].

我可以通过以下方式确认这一点:

import plotly.express as px
dfx = px.data.tips()

在此之后,制作散点图有 3 个选择 range_color:

px.scatter(dfx, x='total_bill', y='tip', color='size', template='plotly_dark').show()
px.scatter(dfx, x='total_bill', y='tip', color='size', template='plotly_dark', range_color=[2,4]).show()
px.scatter(dfx, x='total_bill', y='tip', color='size', template='plotly_dark', range_color=[4,2]).show()

imgur album with results of all 3 cases

range_color 的工作原理是将颜色的范围缩小到指定的范围内,并将超出该范围的任何点 lower/higher 的颜色作为 minimum/maximum 颜色值.

因此,px 无法理解反转范围,您需要手动反转它。