【发布时间】:2020-11-06 23:06:37
【问题描述】:
我正在使用 matplotlib 表来创建包含不同值的热图。创建表格时,刻度在 x 轴和 y 轴上的每个单元格的中心都没有对齐。 我想创造这样的东西。
但我得到的刻度在两个轴上并不均匀。刻度从左下列的单元格中间开始,并在移动到顶部和右侧单元格时被扭曲。
我正在使用这段代码来生成这个 matplotlip 表。
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap, LinearSegmentedColormap
import os
import sys
from matplotlib.table import Table
fig,ax=plt.subplots(figsize=(15,15))
tb = Table(ax,bbox=[0,0,1,1])
nrows, ncols = 20,20
width, height = 1.0 / ncols, 1.0 / nrows
headers = 20
data = np.zeros((nrows, ncols))
ax.set_xticks(np.arange(0.5,headers+0.5))
ax.set_yticks(np.arange(0.5,headers+0.5))
ax.xaxis.set_tick_params(labelsize=12)
ax.yaxis.set_tick_params(labelsize=12)
for (i,j),val in np.ndenumerate(data):
tb.add_cell(i, j, width, height)
tb.add_cell(i, j, width, height, loc='center')
tb.auto_set_font_size(False)
tb.set_fontsize(15)
ax.add_table(tb)
ax.set_aspect('equal')
plt.show()
我有什么遗漏吗?
【问题讨论】:
-
用
matplotlib.table绘制热图有什么特别的原因吗?可以使用maptplotlib.pcolor实现热图。 -
使用Matplotlib table的原因是它需要根据RGB值(R,G,B)为每个单元格显示RGB颜色。 RGB 值将被预先计算,格式为 255,255,255。我已经在每个单元格中实现了 RGB 颜色显示,但在对齐两个轴上的刻度时遇到了困难。
标签: python numpy matplotlib heatmap