Python 3.x 在设置背景色的同时,是否可以自定义matplotlib表格单元格的可见边?
我希望将matplotlib表覆盖在具有网格的绘图上,即该表应在网格上隐藏其后面的任何内容 我还希望边框看起来更像是每行都有边框,而不是每个单元格周围都有边框。但是,设置单元格的可见边似乎会破坏填充 举例说明Python 3.x 在设置背景色的同时,是否可以自定义matplotlib表格单元格的可见边?,python-3.x,matplotlib,Python 3.x,Matplotlib,我希望将matplotlib表覆盖在具有网格的绘图上,即该表应在网格上隐藏其后面的任何内容 我还希望边框看起来更像是每行都有边框,而不是每个单元格周围都有边框。但是,设置单元格的可见边似乎会破坏填充 举例说明 import matplotlib.pyplot as plt import numpy as np # a plot with a grid x = np.linspace(0, 10, 11) y = x ** 2 plt.plot(x, y) plt.grid() # a tab
import matplotlib.pyplot as plt
import numpy as np
# a plot with a grid
x = np.linspace(0, 10, 11)
y = x ** 2
plt.plot(x, y)
plt.grid()
# a table on the same axis with a visible background colour
col_labels = ['col1', 'col2', 'col3']
row_labels = ['row1', 'row2', 'row3']
table_vals = [[11, 12, 13], [21, 22, 23], [31, 32, 33, ]]
colours = [['c'] * 3] * 3
the_table = plt.table(cellText=table_vals,
colWidths=[0.1] * len(col_labels),
cellColours=colours,
rowLabels=row_labels,
bbox=(0.8, 0.8, 0.2, 0.2))
# bump the zorder up so it occludes the underlying chart
the_table.set_zorder(1000)
# change the visible_edges to produce a row border effect
for row_idx, row in enumerate(table_vals):
for col_idx, col in enumerate(row):
edges = 'B'
if col_idx == 0:
edges += 'L'
elif col_idx == 2:
edges += 'R'
the_table[row_idx, col_idx].visible_edges = edges
plt.show()
结果是单元格填充不一致,网格仍然可见
如果删除对可见边的更改,则它将按预期填充
有没有办法将这两种效果结合起来
(使用matplotlib 2.2.3创建的示例)即使没有最后两个for循环,但保留了
表,您的代码对我来说也可以正常工作。在2.2.2
上设置\u zorder(1000)
对此没有直接的解决方案。你所能做的最好的办法可能是根本不填充单元格,而是在表格后面生成一个所需颜色的矩形。问题是看不见的边是不可见的。要解决这个问题,需要使单元
类由两个形状组成,一个用于线条,一个用于边缘。