我有几个相同长度的词,我想在每个位置进行比较。
例子
三个词“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()
产生以下情节:
