在 Python Plotly 热图中为 rows/columns 组分配颜色
Assigning colours to groups of rows/columns in Python Plotly heatmaps
有没有办法在Python中使用plotly
生成热图(例如,通过imshow
)并为rows/columns的不同组分配不同的颜色?目标是生成一个类似于 clustermap
的图,可以用 seaborn
生成而没有树状图,但具有 rows/columns 的外部颜色以指示不同的组,如此处所附示例所示下面并从 seaborn's documentation 获得,其中为行分配了不同的颜色以指示 species
:
lut = dict(zip(species.unique(), "rbg"))
row_colors = species.map(lut)
g = sns.clustermap(iris, row_colors=row_colors)
特别是,是否有使用 plotly.express
并从(或直接使用)pandas
的 DataFrame
中的数据开始的解决方案?
添加颜色以区分热图上的 rows/columns 组可以使用子图实现,其中一个 row/column hetamap 用于区分组。下面显示了一个示例:
fig = make_subplots(rows=2, cols=2, column_widths=[0.9, 0.1], row_heights=[0.9, 0.1], vertical_spacing=0.02)
table = pd.pivot_table(df, index='A', columns='B', values='C', aggfunc='first')
fig.append_trace(go.Heatmap(z=table, colorscale = 'bugn', colorbar={'x' : 1.1, 'y' : 0.5}), row=1, col=1)
fig.append_trace(go.Heatmap(z=df1, colorscale='spectral', showscale=False), row=1, col=2)
fig.append_trace(go.Heatmap(z=df2, colorscale='plasma', showscale=False), row=2, col=1)
fig.update_layout(xaxis2_showticklabels=False, yaxis2_showticklabels=False,
xaxis3_showticklabels=False, yaxis3_showticklabels=False,
xaxis_side='top')
fig.show()
有没有办法在Python中使用plotly
生成热图(例如,通过imshow
)并为rows/columns的不同组分配不同的颜色?目标是生成一个类似于 clustermap
的图,可以用 seaborn
生成而没有树状图,但具有 rows/columns 的外部颜色以指示不同的组,如此处所附示例所示下面并从 seaborn's documentation 获得,其中为行分配了不同的颜色以指示 species
:
lut = dict(zip(species.unique(), "rbg"))
row_colors = species.map(lut)
g = sns.clustermap(iris, row_colors=row_colors)
特别是,是否有使用 plotly.express
并从(或直接使用)pandas
的 DataFrame
中的数据开始的解决方案?
添加颜色以区分热图上的 rows/columns 组可以使用子图实现,其中一个 row/column hetamap 用于区分组。下面显示了一个示例:
fig = make_subplots(rows=2, cols=2, column_widths=[0.9, 0.1], row_heights=[0.9, 0.1], vertical_spacing=0.02)
table = pd.pivot_table(df, index='A', columns='B', values='C', aggfunc='first')
fig.append_trace(go.Heatmap(z=table, colorscale = 'bugn', colorbar={'x' : 1.1, 'y' : 0.5}), row=1, col=1)
fig.append_trace(go.Heatmap(z=df1, colorscale='spectral', showscale=False), row=1, col=2)
fig.append_trace(go.Heatmap(z=df2, colorscale='plasma', showscale=False), row=2, col=1)
fig.update_layout(xaxis2_showticklabels=False, yaxis2_showticklabels=False,
xaxis3_showticklabels=False, yaxis3_showticklabels=False,
xaxis_side='top')
fig.show()