在 Python 中创建一个简单的点图

create a simple point plot in Python

我应该在语料库中计算 n-grams 并创建一个点图来显示单词的等级及其计数作为验证 Zipf's law 的练习。例如,最终结果应如下所示:

我使用 nltk 提取了分布(这里只针对 unigrams):

import nltk
with open(r'./1.txt', 'r') as file:
    text = file.read()
    file.close()

tokens = nltk.word_tokenize(text)
tokens = [token.lower() for token in tokens if len(token) > 1]
fdist = nltk.FreqDist(tokens)
ranks = fdist.most_common()

这给了我一长串所有单词的二元组及其计数,从最常见到最少。

我想知道我应该如何从这里开始。我只需要在 two-axis 平面上绘制它。我没有安装 matpotlib/numpy,也没有使用这些库的经验。但是我有 Microsoft Excel,所以我想知道我是否可以以某种方式以 Excel 可读的格式导出这些数据并将其绘制在那里。

如果您要使用 python 绘图,请安装 matplotlib。将数据放入两个向量中,xy。相应的条目是 xy 值。

然后简单地做

import pylab
pylab.plot(x, y, '.')
pylab.savefig('myfilename.pdf')

'.'告诉它绘制点。

您可以保存为 .pdf 以外的多种格式 要以其他格式保存,只需将 .pdf 扩展名更改为您想要的任何格式即可。如果它是一种可接受的格式,它就会这样做。

以下几行将按照您使用 matplotlib 请求的方式绘制数据:

import matplotlib.pyplot as plt
plt.plot(range(len(ranks)), [r[1] for r in ranks], 'ro')
plt.ylim([0,12])
plt.xlim([0,10])
plt.show()

安装 matplotlib 很简单。请参阅此处了解适用于您的操作系统的说明:http://matplotlib.org/users/installing.html

您可以创建一个 Excel scatter plot using XlsxWriter: