如何使用 plotly 将轮廓颜色更改为轮廓范围外的白色?

How to change contour color to white outside contour range using plotly?

我正在使用下方绘制等高线,如果值超出等高线范围,我想将颜色设置为白色(未显示),如下所示 z_min。对于我的情节,z_min 以下的所有内容仍然是与 zmin 相同的蓝色。在设置 start=, end= inside contour=dict() 后,我看到它正在从下面的网站示例中工作。感谢您的帮助。

https://plotly.com/python/contour-plots/

fig.add_trace(go.Contour(
                            # last column, either pressure or temperature
                            z = Z.T,
                            x = X[:,0], 
                            y = Y[0], 
                            colorscale='Jet',
                            contours=dict(
                                    start=z_min,
                                    end=z_max,
                                    size=25,
                                    coloring="heatmap"),
                            zmin=z_min,
                            zmax=z_max
    
                          )
                              )

暂时想不出有什么直接的方法可以让轮廓变白

一个可能的解决方案是在将数组传递给 go.Contour.[=16 中的参数 z 之前,用 np.nan 替换数组轮廓范围之外的任何值=]

数组中的 NaN 值将不会呈现并显示为透明,这意味着可以看到刻度线和背景。然后您可以将纸张和绘图背景设置为白色,以便 NaN 值显示为白色。

这是一个如何实现的例子。您绘制的阵列的尺寸越大,等高线就越平滑。在这个101 x 101数组中,从轮廓到白色背景的变化并不完美,但非常平滑。

import numpy as np
import plotly.graph_objects as go

x = np.linspace(0, 5, 101)
y = np.linspace(0, 5, 101)
xx, yy = np.meshgrid(x, y)
zz = (xx**2 + yy**2)

z_min, z_max = 10,50
zz_array_masked = zz.copy()
zz_array_masked[zz_array_masked < z_min] = np.nan

fig = go.Figure(data =
    go.Contour(
        z=zz_array_masked,
        colorscale='Jet',
        contours=dict(
            start=z_min,
            end=z_max,
            size=1,
        ),
        zmin=z_min,
        zmax=z_max
    ))

fig.update_layout(
    paper_bgcolor='rgba(0,0,0,0)',
    plot_bgcolor='rgba(0,0,0,0)'
)

fig.show()