Seaborn热图图中的离散图例

用户名

我正在使用此处提供的数据,通过seaborn和pandas构建此热图。

代码:

    import pandas
    import seaborn.apionly as sns

    # Read in csv file
    df_trans = pandas.read_csv('LUH2_trans_matrix.csv')

    sns.set(font_scale=0.8)
    cmap = sns.cubehelix_palette(start=2.8, rot=.1, light=0.9, as_cmap=True)
    cmap.set_under('gray')  # 0 values in activity matrix are shown in gray (inactive transitions)
    df_trans = df_trans.set_index(['Unnamed: 0'])
    ax = sns.heatmap(df_trans, cmap=cmap, linewidths=.5, linecolor='lightgray')

    # X - Y axis labels
    ax.set_ylabel('FROM')
    ax.set_xlabel('TO')

    # Rotate tick labels
    locs, labels = plt.xticks()
    plt.setp(labels, rotation=0)
    locs, labels = plt.yticks()
    plt.setp(labels, rotation=0)

    # revert matplotlib params
    sns.reset_orig()

从csv文件中可以看到,它包含3个离散值:0,-1和1。我想要离散图例而不是颜色条。分别将0标记为A,将-1标记为B,将1标记为C。我该怎么做?

去不

好吧,绝对有不止一种方法可以做到这一点。在这种情况下,只需要三种颜色,我自己创建一个颜色LinearSegmentedColormap来代替自己使用来选择颜色cubehelix_palette如果有足够的颜色需要使用cubehelix_palette,我将使用参数boundaries选项在colormap上定义线段cbar_kws无论哪种方式,都可以使用set_ticks手动指定刻度线set_ticklabels

下面的代码示例演示了的手动创建LinearSegmentedColormap,并包括有关在使用a的情况下如何指定边界的注释cubehelix_palette

import matplotlib.pyplot as plt
import pandas
import seaborn.apionly as sns
from matplotlib.colors import LinearSegmentedColormap

sns.set(font_scale=0.8)
dataFrame = pandas.read_csv('LUH2_trans_matrix.csv').set_index(['Unnamed: 0'])

# For only three colors, it's easier to choose them yourself.
# If you still really want to generate a colormap with cubehelix_palette instead,
# add a cbar_kws={"boundaries": linspace(-1, 1, 4)} to the heatmap invocation
# to have it generate a discrete colorbar instead of a continous one.
myColors = ((0.8, 0.0, 0.0, 1.0), (0.0, 0.8, 0.0, 1.0), (0.0, 0.0, 0.8, 1.0))
cmap = LinearSegmentedColormap.from_list('Custom', myColors, len(myColors))

ax = sns.heatmap(dataFrame, cmap=cmap, linewidths=.5, linecolor='lightgray')

# Manually specify colorbar labelling after it's been generated
colorbar = ax.collections[0].colorbar
colorbar.set_ticks([-0.667, 0, 0.667])
colorbar.set_ticklabels(['B', 'A', 'C'])

# X - Y axis labels
ax.set_ylabel('FROM')
ax.set_xlabel('TO')

# Only y-axis labels need their rotation set, x-axis labels already have a rotation of 0
_, labels = plt.yticks()
plt.setp(labels, rotation=0)

plt.show()

热图使用红色,绿色和蓝色作为颜色,并带有独立的颜色条

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python-Seaborn:修改热图图例

来自分类Dev

在Seaface FacetGrid热图图中获取图例

来自分类Dev

子图中的seaborn热图的一个颜色条

来自分类Dev

子图中的Seaborn热图-对齐x轴

来自分类Dev

在Seaborn热图图中保留一些刻度

来自分类Dev

使用seaborn热图

来自分类Dev

Seaborn热图颜色图

来自分类Dev

海图热图图例最大

来自分类Dev

Seaborn / Matplotlib:具有图例中不同变量的色相(像热图)的散点图?

来自分类Dev

热图Seaborn Annot错误

来自分类Dev

Seaborn 热图以失败告终

来自分类Dev

如何在日历热图中添加图例

来自分类Dev

我正在使用seaborn,并有一个热图。如何创建具有离散范围内特定颜色的颜色图?

来自分类Dev

逆向海图热图图例

来自分类Dev

d3.js热图图例

来自分类Dev

d3.js热图图例

来自分类Dev

地图图覆盖图中的图例

来自分类Dev

在图子图中合并图例

来自分类Dev

地图图覆盖图中的图例

来自分类Dev

在Seaborn热图中更改刻度标签的旋转

来自分类Dev

Seaborn热图中的调色板

来自分类Dev

在seaborn热图中重新标记轴刻度

来自分类Dev

离散点的“插值”以获取热图/轮廓R

来自分类Dev

Seaborn热图:自定义标签

来自分类Dev

Seaborn热图关键词

来自分类Dev

使用Seaborn FacetGrid绘制相关热图

来自分类Dev

使用Seaborn扩大热图的大小

来自分类Dev

使用pandas数据框的seaborn热图

来自分类Dev

Seaborn热图按行排列颜色