Skip to main content
 首页 » 编程设计

python之R 或 Python 中是否有函数/工作流来绘制每个位置的字符以进行单词比较

2025年05月04日13虾米姐

我有几个相同长度的词,我想在每个位置进行比较。

例子

三个词“apples”、“banana”、“orange”

对齐

apples 
banana 
orange 

绘图

我想在 xy 坐标图上比较这些词,y 轴上有整个字母表(A 到 Z 或 Z 到 A),x 轴上有每个位置(从左到右,位置 0 到长度(字 - 1))。绘制点表示给定位置(x 轴)的字符(y 轴),这些点由一条线连接在一起。

此图中是否可以包含其他信息(例如,基于其他类别的点的着色;基于其他类别的点的大小/形状)?

有没有办法在 Python/R 中准备这些数据并以上述方式显示它?


我在 R 中的尝试

我已经尝试制作一个列表来记录每个单词每个位置的每个字符,但是我不确定如何遍历此列表以显示每个位置的字符。

请您参考如下方法:

这可以使用例如 matplotlib 来实现。您可以通过内置的 ord 函数获取 y 坐标。字母表可以从 string.ascii_lowercase 获得(省去一些打字):

from string import ascii_lowercase 
import matplotlib.pyplot as plt 
 
words = ['apples', 'banana', 'orange'] 
y_coords = [[ord(c) for c in word] for word in words] 
 
f, ax = plt.subplots() 
for word, y in zip(words, y_coords): 
    ax.plot(range(len(y)), y, '-o', label=word) 
y_range = [ord('a') - 1, ord('z') + 1] 
ax.set_ylim(y_range) 
ax.set_yticks(range(*y_range)) 
ax.set_yticklabels(' ' + ascii_lowercase) 
ax.grid() 
ax.legend() 
f.savefig('/tmp/example.png', bbox_inches='tight', pad_inches=0) 
plt.show() 

产生以下情节: