首页 > 解决方案 > 如何更改 Matplotlib 表的透明度/不透明度?

问题描述

目的:制作matplotlib.pyplot.table 不透明的,以便背景图的主要和次要网格线不会出现在前景表中。

问题:我无法正确操作matplotlib.pyplot.tablekwarg alphamatplotlib.artist.Artist.set_alpha函数来更改绘图中绘制的表格的透明度。

MWE:请考虑以下代码示例作为问题的答案:如何在 Matplotlib 中的绘图上放置表格?

import matplotlib.pylab as plt

plt.figure()
ax=plt.gca()
plt.grid('on', linestyle='--')
y=[1,2,3,4,5,4,3,2,1,1,1,1,1,1,1,1]
col_labels=['col1','col2','col3']
row_labels=['row1','row2','row3']
table_vals=[[11,12,13],[21,22,23],[31,32,33]]
#
the_table = plt.table(cellText=table_vals,
                  colWidths = [0.1]*3,
                  rowLabels=row_labels,
                  colLabels=col_labels,
                  loc='center right')
plt.plot(y)
plt.show()

产生以下内容:

matplotlib 表

尝试

alpha我试图通过添加关键字来摆脱表格中的背景网格线plt.table

the_table = plt.table(cellText=table_vals,
                  colWidths = [0.1]*3,
                  rowLabels=row_labels,
                  colLabels=col_labels,
                  loc='center right',
                  alpha=1.0)

然后通过调用set_alpha

the_table.set_alpha(1.0)

他们都没有解决问题或引发错误。

标签: pythonmatplotlib

解决方案


alphaafaik 不适用于表格,但您可以更改zorder

the_table = plt.table(cellText=table_vals,
                  colWidths = [0.1]*3,
                  rowLabels=row_labels,
                  colLabels=col_labels,
                  loc='center right', zorder=3)

matplotlib.axes.Axes.tablealpha中提到了关键字参数。但这似乎没有任何效果。
更改zorder(元素的垂直顺序)会使表格出现在图的顶部。这不允许半透明表,但至少是使网格线消失的一种解决方法。


推荐阅读