如何修复 matplotlib 和 seaborn 热图?

Posted

技术标签:

【中文标题】如何修复 matplotlib 和 seaborn 热图?【英文标题】:How to fix matplotlib and seaborn heatmap plot? 【发布时间】:2017-09-29 03:45:11 【问题描述】:

我使用 Seaborn 和 Matplotlib 绘制了一张热图。

在 Matplotlib 中,刻度的名称是可以的,但我不喜欢出现的白线。 怎样才能让白线消失?

在seaborn中,蜱的名字是错误的,但我喜欢这个情节。 如何将刻度移动到每个正方形的中心? 如何修复蜱的名称?最好的分数是 0.857,参数:'clf__C': 100000.0, 'clf__gamma': 1e-05

但是 seaborn 使用:'clf__C': 1e-05, 'clf__gamma': 1e-05

Ranking of best parameters
RandomizedSearchCV took 5.58 seconds for 25 candidates parameter  settings.
Model with rank: 1
Mean validation score: 0.857 (std: 0.036)
Parameters: 'clf__C': 100000.0, 'clf__gamma': 1.0000000000000001e-05

Model with rank: 2
Mean validation score: 0.821 (std: 0.048)
Parameters: 'clf__C': 10000000000.0, 'clf__gamma': 1.0000000000000001e-05

Model with rank: 3
Mean validation score: 0.720 (std: 0.065)
Parameters: 'clf__C': 100000.0, 'clf__gamma': 1.0

Model with rank: 3
Mean validation score: 0.720 (std: 0.065)
Parameters: 'clf__C': 10000000000.0, 'clf__gamma': 1.0


MY CODE FOR SEABORN
# You can use this to generate a (5,5) array:
# scores = np.random.rand(5,5)


plt.figure(figsize=(8, 6))
scores = inner_rs.cv_results_['mean_test_score'].reshape(len(C_range),len(gamma_range))
ax = sns.heatmap(scores, annot=True)

plt.xlabel('gamma')
plt.ylabel('C')

plt.xticks(np.arange(len(gamma_range)), gamma_range, rotation=45)
plt.yticks(np.arange(len(C_range)), C_range)
plt.title('Validation accuracy')
plt.show()


MY CODE FOR MATPLOTLIB

from matplotlib.colors import Normalize

class MidpointNormalize(Normalize):
    def __init__(self, vmin=None, vmax=None, midpoint=None, clip=False):
        self.midpoint = midpoint
        Normalize.__init__(self, vmin, vmax, clip)

    def __call__(self, value, clip=None):
        x, y = [self.vmin, self.midpoint, self.vmax], [0, 0.5, 1]
        return np.ma.masked_array(np.interp(value, x, y))


 plt.figure(figsize=(8, 6))
scores = inner_rs.cv_results_['mean_test_score'].reshape(len(C_range),len(gamma_range))
plt.imshow(scores, interpolation='nearest', cmap=plt.cm.hot,

       norm=MidpointNormalize(vmin=0.2, midpoint=0.92))
plt.xlabel('gamma')
plt.ylabel('C')
plt.colorbar()
plt.xticks(np.arange(len(gamma_range)), gamma_range, rotation=45)
plt.yticks(np.arange(len(C_range)), C_range)
plt.title('Validation accuracy')
plt.grid(False)
plt.show()

MATPLOTLIB

海生

【问题讨论】:

【参考方案1】:

不幸的是,您没有为 matplotlib 绘图显示任何代码。但是摆脱网格的解决方案是使用plt.grid(False)

【讨论】:

您好,我刚刚添加了 matplotlib 的代码。而你的回答是有效的!

以上是关于如何修复 matplotlib 和 seaborn 热图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不更改 matplotlib 默认值的情况下使用 seaborn?

如何从 seaborn / matplotlib 图中删除或隐藏 x 轴标签

通过 matplotlib 和 seaborn 将 pandas groupby 转换为图表

如何使用 Matplotlib 或 Seaborn 根据不同的组指定图例

如何在 matplotlib 或 seaborn 中创建带有系列的堆叠条形图? [复制]

使用 seaborn 向 matplotlib 图添加次要网格线