Plotly 中的对数热图

use*_*780 6 python logarithm heatmap plotly plotly-python

我正在使用Plotly 的热图。我想对颜色使用对数刻度,但找不到如何操作。这是一个 MWE:

import plotly.graph_objects as go
import numpy as np

z = [[1e-4,1e-3,1e-2],
    [1e-1, 1, 1e1],
    [1e2, 1e3, 1e4]]

go.Figure(
    data = go.Heatmap(
        z = z,
    )
).show()

go.Figure(
    data = go.Heatmap(
        z = np.log(z),
    )
).show()
Run Code Online (Sandbox Code Playgroud)

在 MWE 中,我手动计算数据的对数。我希望颜色图显示为第二张图,但无需手动转换数据,并且还z以色标显示实际值,而不是对数。

use*_*780 1

我厌倦了每次手动执行此操作,因此我编写了一个简单的函数来自动执行此操作,可以在此处找到该函数。它与 完全兼容plotly.express.imshow,它在悬停框中以及色标中显示真实值(即不是对数),并且它实际上是对数。下面是一个工作示例。

import plotly_utils # https://github.com/SengerM/plotly_utils
import numpy

z1 = numpy.random.randint(1,100000,(33,33))
z2 = numpy.random.randint(1,500,(33,33))

for title,img in {'spanning many orders of magnitude':z1,'spanning few orders of magnitude':z2}.items():
    fig = plotly_utils.imshow_logscale(img, title=title)
    fig.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述