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

时间:2015-01-14 03:00:44

标签: python excel python-3.x plot nltk

我应该在语料库中计算n-gram并创建一个点图,将单词的行列及其计数显示为验证Zipf's law的练习。最终结果应该是这样的:

enter image description here

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

这给了我一长串所有单词的2元组列表,并且从最常见到最不重要的顺序排列。

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

3 个答案:

答案 0 :(得分:2)

以下几行将根据您使用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

答案 1 :(得分:1)

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

然后只需做

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

'。'告诉它绘制点。

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

答案 2 :(得分:1)

您可以创建Excel scatter plot using XlsxWriter

enter image description here