如何为Plotly热力图动画设置静态colorscale,保持帧间颜色与值对应一致
你认为go.Heatmap没有cmin、cmax参数是误判,Plotly的热力图组件原生支持这两个参数,搭配zauto=False禁用自动颜色范围适配,即可实现所有帧的数值与颜色对应关系完全固定,操作方法如下:
- 先计算所有帧对应z值的全局最小、最大值,作为统一的颜色区间边界
- 给初始热力图和所有帧中的热力图都添加
zauto=False、cmin=全局最小值、cmax=全局最大值三个参数即可
修改后的完整代码示例:
# 先计算全局z值的最大最小值 import numpy as np z_min = np.min(T_series['thetao']) z_max = np.max(T_series['thetao']) framestamps = [go.Frame(data=[go.Heatmap( x=lon, y=lat, z=T_series['thetao'][i], colorscale='aggrnyl', zauto=False, # 禁用自动调整颜色范围 cmin=z_min, # 固定颜色最小值 cmax=z_max # 固定颜色最大值 )]) for i in range(300)] fig = go.Figure( data=[go.Heatmap( x=lon, y=lat, z=T_series['thetao'][0], colorscale='aggrnyl', zauto=False, cmin=z_min, cmax=z_max )], layout=go.Layout( updatemenus=[dict( type='buttons', buttons=[dict( label='Play', method='animate', args = [None, {"frame": {"duration": 250,"redraw": True}, "fromcurrent": True}], )] )] ), frames=framestamps )
内容的提问来源于stack exchange,提问作者Mirko
相关产品推荐
相关产品推荐

