目标:使matplotlib.pyplot.table 不透明,使背景图的主要和次要网格线不出现在前景表中.
问题:我无法正确操作matplotlib.pyplot.tablekwarg alpha或matplotlib.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()
Run Code Online (Sandbox Code Playgroud)
产生以下内容:
尝试:
我试图通过添加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)
Run Code Online (Sandbox Code Playgroud)
然后通过调用set_alpha:
the_table.set_alpha(1.0)
Run Code Online (Sandbox Code Playgroud)
他们都没有解决问题或引发错误.
alphaafaik 不适用于表格,但您可以更改zorder:
the_table = plt.table(cellText=table_vals,
colWidths = [0.1]*3,
rowLabels=row_labels,
colLabels=col_labels,
loc='center right', zorder=3)
Run Code Online (Sandbox Code Playgroud)
在matplotlib.axes.Axes.tablealpha中提到了关键字参数。但似乎没有什么效果。
更改zorder(元素的垂直顺序)使表格出现在绘图的顶部。这不允许半透明表格,但至少是一种使网格线消失的解决方法。