2016-09-29 8 views
1

Я замышляет Heatmap с использованием Matplotlib как на рисунке ниже:Как центрировать тиков и этикетки в Тепловая карта

matplotlib heatmap

Участок строится с помощью кода ниже:

C_range = 10. ** np.arange(-2, 8) 
gamma_range = 10. ** np.arange(-5, 4) 

confMat=np.random.rand(10, 9) 

heatmap = plt.pcolor(confMat) 

for y in range(confMat.shape[0]): 
    for x in range(confMat.shape[1]): 
     plt.text(x + 0.5, y + 0.5, '%.2f' % confMat[y, x], 
       horizontalalignment='center', 
       verticalalignment='center',) 


plt.grid() 
plt.colorbar(heatmap) 
plt.subplots_adjust(left=0.15, right=0.99, bottom=0.15, top=0.99) 
plt.ylabel('Cost') 
plt.xlabel('Gamma') 

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

I необходимо центрировать метки и метки на обеих осях. Есть идеи?

+0

Непонятно, каково ваше намерение. Пожалуйста, объясните более подробно, где вы хотите тики и метки. – Repiklis

+0

@Repiklis Я хочу, чтобы положение меток (гамма и стоимость) и тики в центре каждой коробки. – AdiT

ответ

1

Для вашего конкретного кода самое простое решение переложить свои позиции клеща на половину разделения блока:

import numpy as np 
import matplotlib.pyplot as plt 

C_range = 10. ** np.arange(-2, 8) 
gamma_range = 10. ** np.arange(-5, 4) 

confMat=np.random.rand(10, 9) 

heatmap = plt.pcolor(confMat) 

for y in range(confMat.shape[0]): 
    for x in range(confMat.shape[1]): 
     plt.text(x + 0.5, y + 0.5, '%.2f' % confMat[y, x], 
       horizontalalignment='center', 
       verticalalignment='center',) 


#plt.grid() #this will look bad now 
plt.colorbar(heatmap) 
plt.subplots_adjust(left=0.15, right=0.99, bottom=0.15, top=0.99) 
plt.ylabel('Cost') 
plt.xlabel('Gamma') 

plt.xticks(np.arange(len(gamma_range))+0.5, gamma_range, rotation=45,) 
plt.yticks(np.arange(len(C_range))+0.5, C_range, rotation=45) 
plt.show() 

result

Как вы можете видеть, в этом случае вам нужно выключить grid , иначе он будет перекрываться с вашими квадратами и загромождать ваш сюжет.

+1

Это было именно то, что мне нужно. Спасибо. – AdiT

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

  • Нет связанных вопросов^_^