2015-10-06 3 views
0
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, чтобы сделать тепловые карты регрессий.с добавлением текстовых меток к pcolor heatmap

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"] 

Майкл Боулз код ниже:

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:]

ответ

3

Код от 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() 

enter image description here

Смежные вопросы