绘图热图的样式

Posted

技术标签:

【中文标题】绘图热图的样式【英文标题】:Styling for plolty heatmap 【发布时间】:2022-01-14 20:48:26 【问题描述】:

我只想显示此热图“Total Wins”的一列,因此它将是第一个垂直列。我希望该图仍然是一个具有图例且具有交互性的绘图对象。

'''

import plotly.figure_factory as ff
import plotly.graph_objects as go
import numpy as np
corr = new_best_teams.corr()
corr = round(corr,3)
mask = np.triu(np.ones_like(corr, dtype=bool))
new_best_teams_mask = corr.mask(mask)

fig = ff.create_annotated_heatmap(z=new_best_teams_mask.to_numpy(), 
                                  x=new_best_teams_mask.columns.tolist(),
                                  y=new_best_teams_mask.columns.tolist(),
                                  colorscale=px.colors.diverging.RdBu,
                                  hoverinfo="none", 
                                  showscale=True, ygap=1, xgap=1
                                 )

fig.update_xaxes(side="bottom")

fig.update_layout(
    title_text='Heatmap', 
    title_x=0.5, 
    width=1000, 
    height=1000,
    xaxis_showgrid=False,
    yaxis_showgrid=False,
    xaxis_zeroline=False,
    yaxis_zeroline=False,
    yaxis_autorange='reversed',
    template='plotly_white'
)


for i in range(len(fig.layout.annotations)):
    if fig.layout.annotations[i].text == 'nan':
        fig.layout.annotations[i].text = ""

fig.show()

'''

这是输出的图像:enter image description here

这是我想要的图像(我希望它仍然是包含图例的交互式绘图图):enter image description here

【问题讨论】:

难道不可以通过将数据限制为要输出的数据来做到这一点,而不是在图形端进行调整吗? 【参考方案1】:

在这种情况下,您不需要蒙版或上三角形。尝试只切片第一列并绘制它:

corr_total_wins = corr.iloc[:, :1]
fig = fig.ff.create_annotated_heatmap(corr_total_wins)

ff 的替代品是https://plotly.com/python/imshow/

【讨论】:

以上是关于绘图热图的样式的主要内容,如果未能解决你的问题,请参考以下文章

Seaborn 热图:在绘图顶部移动颜色条

使用 seaborn 和 matplotlib 对热图进行注释的绘图

更改绘图热图中的颜色条标签 (R)

R上的绘图问题(使用热图)

R语言ggplot2绘图单元格为方块的热图简单小例子

MATLAB | 绘图复刻 | 热图+差异气泡图