DF_correlation = [[ 1. 0.98681158 0.82755361 0.92526117 0.89791366 0.9030177
0.89770557 0.55671958]
[ 0.98681158 1. 0.83368369 0.9254521 0.89316248 0.89972443
0.90532978 0.57465985]
[ 0.82755361 0.83368369 1. 0.81922077 0.77497229 0.7983193
0.81733801 0.55746732]
[ 0.92526117 0.9254521 0.81922077 1. 0.96940546 0.96637508
0.95535544 0.54038968]
[ 0.89791366 0.89316248 0.77497229 0.96940546 1. 0.93196132
0.88261706 0.42088366]
[ 0.9030177 0.89972443 0.7983193 0.96637508 0.93196132 1.
0.90765632 0.50381925]
[ 0.89770557 0.90532978 0.81733801 0.95535544 0.88261706 0.90765632
1. 0.62757404]
[ 0.55671958 0.57465985 0.55746732 0.54038968 0.42088366 0.50381925
0.62757404 1. ]]
我正在关注https://www.geekbooks.me/book/view/machine-learning-in-python制作回归热图。
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
headers = ["sex", "length","diameter", "height", "whole_weight", "shucked_weight","viscera_weight","shell_weight","rings"]
Michael Bowles代码如下:
plt.pcolor(DF_correlation)
plt.show()
此工作正常,但没有标签,因此我尝试添加matplotlib: colorbars and its text labels
中的标签我改变了格式但仍然没有运气:
fig, ax = plt.subplots()
heatmap = ax.pcolor(DF_correlation)
cbar = plt.colorbar(heatmap)
ax.set_xticklabels = ax.set_yticklabels = headers[1:]
plt.show()
如何将标签添加到此图中?这是一个相关图,因此x和y标签将是相同的...基本上headers[1:]
答案 0 :(得分:5)
来自the answer you linked的代码效果很好。看起来你改变了一些意味着它没有用的东西。
您遇到的主要问题是您尝试将set_xticklabels
和set_yticklabels
设置为此处的列表
ax.set_xticklabels = ax.set_yticklabels = headers[1:]
但是,它们是Axes
对象(ax
)的方法,因此您必须使用headers
列表作为参数调用它们。
ax.set_xticklabels(headers[1:])
ax.set_yticklabels(headers[1:])
这里是您脚本中采用的链接答案的方法。我还旋转了xticklabels
以阻止它们重叠(rotation=90
),并将它们移动到单元格的中心(请参阅下面的set_xticks
和set_yticks
行)
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Make DF_correlation into a DataFrame
DF_correlation = pd.DataFrame([
[ 1. , 0.98681158, 0.82755361, 0.92526117, 0.89791366, 0.9030177 , 0.89770557, 0.55671958],
[ 0.98681158, 1. , 0.83368369, 0.9254521 , 0.89316248, 0.89972443, 0.90532978, 0.57465985],
[ 0.82755361, 0.83368369, 1. , 0.81922077, 0.77497229, 0.7983193 , 0.81733801, 0.55746732],
[ 0.92526117, 0.9254521 , 0.81922077, 1. , 0.96940546, 0.96637508, 0.95535544, 0.54038968],
[ 0.89791366, 0.89316248, 0.77497229, 0.96940546, 1. , 0.93196132, 0.88261706, 0.42088366],
[ 0.9030177 , 0.89972443, 0.7983193 , 0.96637508, 0.93196132, 1. , 0.90765632, 0.50381925],
[ 0.89770557, 0.90532978, 0.81733801, 0.95535544, 0.88261706, 0.90765632, 1. , 0.62757404],
[ 0.55671958, 0.57465985, 0.55746732, 0.54038968, 0.42088366, 0.50381925, 0.62757404, 1. ]
])
headers = ["sex", "length","diameter", "height", "whole_weight", "shucked_weight","viscera_weight","shell_weight","rings"]
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.25,left=0.25) # make room for labels
heatmap = ax.pcolor(DF_correlation)
cbar = plt.colorbar(heatmap)
# Set ticks in center of cells
ax.set_xticks(np.arange(DF_correlation.shape[1]) + 0.5, minor=False)
ax.set_yticks(np.arange(DF_correlation.shape[0]) + 0.5, minor=False)
# Rotate the xlabels. Set both x and y labels to headers[1:]
ax.set_xticklabels(headers[1:],rotation=90)
ax.set_yticklabels(headers[1:])
plt.show()