用MATLAB绘制词频图

用MATLAB绘制词频图,matlab,import,frequency,word-frequency,Matlab,Import,Frequency,Word Frequency,我有一个大的文本文件,其中包含大约1000万个独特的单词,它们的频率在两列中,如下所示: apple 10 banana 21 pineapple 7 orange 9 ... 我想画一个图表,频率在Y轴,单词在X轴。我使用了“load”命令,但它似乎不起作用。我得到以下错误: Error using ==> load Unknown text on line number 1 of ASCII file C:\Users\..\Desktop\inputdata.txt "aa" 有

我有一个大的文本文件,其中包含大约1000万个独特的单词,它们的频率在两列中,如下所示:

apple 10
banana 21
pineapple 7
orange 9
...
我想画一个图表,频率在Y轴,单词在X轴。我使用了“load”命令,但它似乎不起作用。我得到以下错误:

Error using ==> load
Unknown text on line number 1 of ASCII file C:\Users\..\Desktop\inputdata.txt
"aa"
有没有关于如何绘制图形的解决方案?

试试,例如:

 a=importdata('inputdata.txt')
a.data
-将输出数值向量,
[10,21,…]

a.textdata
-将输出一个包含单词的单元格数组,
apple
banana
,等等

因此,如果要根据频率进行排序:

[b idx]=sort(a.data,'descend')
plot(a.data(idx));
另一个选项是使用
barh
,如下所示:

[b idx]=sort(a.data)
barh(a.data(idx));
set(gca,'yticklabel',a.textdata(idx)) 
data{1,1}(2) 
data{1,2}(2)

然而,这只适用于有限的单词列表,而不是1000万

试试看,例如:

 a=importdata('inputdata.txt')
a.data
-将输出数值向量,
[10,21,…]

a.textdata
-将输出一个包含单词的单元格数组,
apple
banana
,等等

因此,如果要根据频率进行排序:

[b idx]=sort(a.data,'descend')
plot(a.data(idx));
另一个选项是使用
barh
,如下所示:

[b idx]=sort(a.data)
barh(a.data(idx));
set(gca,'yticklabel',a.textdata(idx)) 
data{1,1}(2) 
data{1,2}(2)


然而,这只适用于有限的单词列表,而不是1000万

无法加载
.txt
文件。您需要使用文件I/O功能,例如
textscan

fid = fopen('inputdata.txt');
data = textscan(fid, '%s%f')
fclose(fid);
数据
将是一个1x2单元。内容包括:

<4x1 cell>  [10;21;7;9]
您可以像这样访问字符串:

[b idx]=sort(a.data)
barh(a.data(idx));
set(gca,'yticklabel',a.textdata(idx)) 
data{1,1}(2) 
data{1,2}(2)
将输出“香蕉”

并访问以下数字:

[b idx]=sort(a.data)
barh(a.data(idx));
set(gca,'yticklabel',a.textdata(idx)) 
data{1,1}(2) 
data{1,2}(2)

将给您21,这是香蕉的对应数字。

您无法加载
.txt
文件。您需要使用文件I/O功能,例如
textscan

fid = fopen('inputdata.txt');
data = textscan(fid, '%s%f')
fclose(fid);
数据
将是一个1x2单元。内容包括:

<4x1 cell>  [10;21;7;9]
您可以像这样访问字符串:

[b idx]=sort(a.data)
barh(a.data(idx));
set(gca,'yticklabel',a.textdata(idx)) 
data{1,1}(2) 
data{1,2}(2)
将输出“香蕉”

并访问以下数字:

[b idx]=sort(a.data)
barh(a.data(idx));
set(gca,'yticklabel',a.textdata(idx)) 
data{1,1}(2) 
data{1,2}(2)
我会给你21,这是香蕉的对应数字