如何修复 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 根据不同的组指定图例