我正在尝试绘制热图以说明属性之间的相关性。尝试将颜色栏添加到图中时出现错误。这是代码和图像:
def housing_heatmap(data=housing_copy):
columns = data.select_dtypes(exclude='object').columns
corr_matrix = data.corr()
fig, ax = plt.subplots(figsize=(8, 8))
ax.matshow(corr_matrix, cmap='jet')
ax.set_xticks(range(len(columns)))
ax.set_yticks(range(len(columns)))
ax.set_xticklabels(columns)
ax.set_yticklabels(columns)
plt.setp(ax.get_xticklabels(), rotation=45, ha='left', rotation_mode='anchor')
plt.colorbar(corr_matrix)
fig.tight_layout()
plt.show()
return None
housing_heatmap()
此代码在生成图像时给出错误。这是图片:
这是由该行引起的错误:
plt.colorbar(corr_matrix)
AttributeError: 'DataFrame' object has no attribute 'autoscale_None'
有什么方法可以在不产生此错误的情况下为热图添加颜色条吗?
谢谢。
答案 0 :(得分:1)
您需要将图像传递到plt.colorbar
,而不是矩阵本身:
def housing_heatmap(data= housing_copy):
columns = data.select_dtypes(exclude='object').columns
corr_matrix = data.corr()
fig, ax = plt.subplots(figsize=(8, 8))
mat_plot = ax.matshow(corr_matrix, cmap='jet')
ax.set_xticks(range(len(columns)))
ax.set_yticks(range(len(columns)))
ax.set_xticklabels(columns)
ax.set_yticklabels(columns)
plt.setp(ax.get_xticklabels(), rotation=45, ha='left', rotation_mode='anchor')
plt.colorbar(mat_plot)
fig.tight_layout()
plt.show()
housing_heatmap()
答案 1 :(得分:0)
万一有人想知道,我考虑了@RobinFrcd的答案,并在matplotlib.pyplot.colorbar
中指定了fraction
和pad
关键字参数。
def housing_heatmap(data):
columns = data.select_dtypes(exclude='object').columns
corr_matrix = data.corr()
fig, ax = plt.subplots(figsize=(8, 8))
mat = ax.matshow(corr_matrix, cmap='jet')
ax.set_xticks(range(len(columns)))
ax.set_yticks(range(len(columns)))
ax.set_xticklabels(columns)
ax.set_yticklabels(columns)
plt.setp(ax.get_xticklabels(), rotation=45, ha='left', rotation_mode='anchor')
plt.colorbar(mat, fraction=0.045, pad=0.05)
fig.tight_layout()
plt.show()
产生以下图像:
您可以更改fraction
和pad
的值以获得所需的颜色条大小。
希望这对在那里的人有帮助。