Matplotlib表格长文本跨多单元格显示问题
Matplotlib表格长文本跨多单元格显示问题
嘿,我懂你现在的困扰——想把长文本放在表格里跨多个单元格显示,结果现在文本被硬塞进单个单元格,字体还自动缩小来适配,试了设置clip_on=False也没解决,对吧?
其实问题出在你只是修改了单个单元格的文本内容,哪怕关闭了裁剪,文本还是被限制在那个单元格的边界里,所以Matplotlib才会自动缩小字体。要实现跨单元格显示,咱们得换个思路:直接在表格所在的轴上添加文本,让它覆盖多个单元格的范围,而不是绑定到单个单元格上。
给你调整一下你现有的代码,这样就能让"NOT ALL DATA"跨所有列显示,字体大小也不会被自动缩小:
if truncated: # 获取表格所在的轴对象 ax = table.axes # 定义要跨的列范围(这里是从第0列到最后一列) start_col = 0 end_col = num_cols - 1 # 获取跨列区域的左右边界和垂直居中位置 x_left = table[(num_rows, start_col)].get_x0() x_right = table[(num_rows, end_col)].get_x1() y_center = table[(num_rows, start_col)].get_y() + table[(num_rows, start_col)].get_height() / 2 # 在轴上添加跨单元格的文本 ax.text( (x_left + x_right) / 2, # 水平居中 y_center, # 垂直居中 "NOT ALL DATA", ha='center', # 水平对齐方式 va='center', # 垂直对齐方式 fontsize=12, # 自定义字体大小 clip_on=False ) # 清空这一行所有单元格的原有文本,避免重叠 for col in range(num_cols): cell = table[(num_rows, col)] cell.set_text("")
简单说下原理:咱们先拿到要跨的那一行所有单元格的左右边界,然后在这个区域的中心位置添加文本,这样文本就自然覆盖了多个单元格,而且字体大小完全由你控制,不会被自动压缩。如果只是想跨特定的几列,比如只跨前3列,那把end_col改成2就行,灵活得很~
备注:内容来源于stack exchange,提问作者dad
相关产品推荐
相关产品推荐

