如何用Python制作美观的文本匹配可视化图表?
实现文本匹配对的连线可视化方案
针对你需要的文本匹配连线可视化(左右两列文本对应匹配对用线条连接,样式清晰美观),可以通过Matplotlib自定义绘制来实现,避开通用数据绘图的局限,直接控制文本位置和连线样式:
核心实现步骤
- 将匹配对拆分为左右两组文本,分别固定在画布的左右两侧
- 为每组文本分配均匀的纵向坐标,保证对齐
- 针对每个匹配对绘制连线,可自定义线条样式(如实线匹配相同文本、虚线匹配不同文本)
- 隐藏冗余坐标轴,调整字体和布局优化美观度
完整代码示例
import matplotlib.pyplot as plt # 你的匹配列表 matchings = [('The', 'The'), ('over', 'above'), ('face', 'wall')] # 拆分左右文本组 left_texts = [pair[0] for pair in matchings] right_texts = [pair[1] for pair in matchings] n_pairs = len(matchings) # 设置画布 plt.figure(figsize=(8, 3), dpi=120) ax = plt.gca() # 分配坐标:左侧x=0.2,右侧x=0.8,y坐标均分 y_coords = [i/(n_pairs-1) if n_pairs>1 else 0.5 for i in range(n_pairs)] # 绘制左侧文本 for y, text in zip(y_coords, left_texts): ax.text(0.2, y, text, fontsize=12, ha='right', va='center') # 绘制右侧文本 for y, text in zip(y_coords, right_texts): ax.text(0.8, y, text, fontsize=12, ha='left', va='center') # 绘制匹配连线:相同文本用实线,不同用虚线 for i, (left, right) in enumerate(matchings): y = y_coords[i] line_style = '-' if left == right else '--' line_color = '#2ecc71' if left == right else '#3498db' ax.plot([0.2, 0.8], [y, y], linestyle=line_style, color=line_color, linewidth=2) # 美化布局:隐藏坐标轴,调整范围 ax.set_xlim(0, 1) ax.set_ylim(-0.1, 1.1) ax.set_axis_off() plt.title("文本匹配可视化", fontsize=14, pad=20) plt.tight_layout() plt.show()
效果说明
- 左右文本对齐工整,匹配对连线清晰区分(相同匹配用绿色实线,不同匹配用蓝色虚线)
- 无冗余坐标轴干扰,整体样式简洁美观,完全贴合文本匹配可视化的需求
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

