将 px.scatterplot 添加到 px.imshow?

Add px.scatterplot to px.imshow?

我在尝试做的事情上遇到了很多问题。这个想法是在 python 中用 绘图 ! 复制一个常见的 excel 热图(他们就是这样称呼它的)。热图应如下所示:

到目前为止我得到的(感谢这个论坛提供的答案)是:

import plotly.express as px
data = [[1, 1, 2, 2, 3], [1, 2, 3, 3, 4], [2, 3, 3, 4, 5], [2, 3, 4, 5, 5], [3, 4, 5, 5, 5]]

fig = px.imshow(data, color_continuous_scale=["darkgreen", "lightgreen", "yellow", "orange", "red"])

fig.update_yaxes(autorange=True)
fig.update_layout(
    xaxis=dict(
        tickmode='linear',
        tick0=1,
        dtick=1
    ),
    autosize=False,
    width=500
)
# fig.layout['coloraxis']['colorbar']['x'] = 1.0
fig.update_layout(coloraxis_colorbar=dict(
    tickvals=[1, 2, 3, 4, 5],
    ticktext=[1, 2, 3, 4, 5],
    x=1.0
))
fig.show()

这给了我们下图:

现在我有 样本 的散点图看起来像

import plotly.express as px
fig = px.scatter(x=[3.8,4.4,4.1,3.7,4.2],y=[4.9,3.9,2.5,3.6,2.1])
fig.update_xaxes(
    range=[0, 5])
fig.update_yaxes(
    range=[0, 5])
fig.show()

所以唯一剩下的就是从 plotly.express 库中添加散点图的踪迹。但似乎 imshow 和散点图不兼容。所以我不知道该怎么做。

非常感谢任何帮助!

非常感谢!

我相信你的热图有点偏离,但是使用 plotly 中的 graph_objects 库并使用 go.Scatter 创建子图,我能够将散点添加到你的代码中为热图提供:

import plotly.graph_objects as go

fig.add_trace(go.Scatter(x=[3.8,4.4,4.1,3.7,4.2],y=[4.9,3.9,2.5,3.6,2.1], mode='markers', marker=dict(color=['black'])))

添加它会产生如下所示的输出:

完整代码如下所示:

import plotly.express as px
import plotly.graph_objects as go

data = [[1, 1, 2, 2, 3], [1, 2, 3, 3, 4], [2, 3, 3, 4, 5], [2, 3, 4, 5, 5], [3, 4, 5, 5, 5]]

fig = px.imshow(data, color_continuous_scale=["darkgreen", "lightgreen", "yellow", "orange", "red"])

fig.update_yaxes(autorange=True)
fig.update_layout(
    xaxis=dict(
        tickmode='linear',
        tick0=1,
        dtick=1
    ),
    autosize=False,
    width=500
)
# fig.layout['coloraxis']['colorbar']['x'] = 1.0
fig.update_layout(coloraxis_colorbar=dict(
    tickvals=[1, 2, 3, 4, 5],
    ticktext=[1, 2, 3, 4, 5],
    x=1.0
))

import plotly.graph_objects as go

fig.add_trace(go.Scatter(x=[3.8,4.4,4.1,3.7,4.2],y=[4.9,3.9,2.5,3.6,2.1], mode='markers', marker=dict(color=['black'])))

fig.show()