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

我应该在一个语料库中计算n-gram,并创build一个点图,显示单词的等级和他们的计数,作为validationZipf定律的练习。 最终的结果应该是这样的:

在这里输入图像说明

我使用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() 

这给了我一个所有的单词和他们的计数从最常见到最less的2元组长列表。

我想知道如何从这里出发。 我只需要在双轴飞机上绘制它。 我没有安装matpotlib / numpy,在这些库中没有任何经验。 不过,我有Microsoft 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

您可以使用XlsxWriter创buildExcel 散点图 :

在这里输入图像说明