Matplotlib与频率的字符串

时间:2018-04-29 21:22:18

标签: python r matplotlib bar-chart

好吧所以我试图创建一个比我在R中更漂亮的图形。我想知道是否有一种简单的方法可以在一列中使用频率而在另一列中使用字符串。我发现的所有文档似乎都没有触及除xticks之外的这个主题。在R中这很简单,所以我觉得我在这里遗漏了一些东西。

在R中,我可以这样做:

> data<-read.table ("/home/myname/Desktop/hist.txt", sep="|")
> names (data)[2] = "Words"
> names (data)[1] = "Frequency"
> barplot(data$Frequency)

我的数据结构如下:

3059195|and
2066278|ant
1851521|it
1741203|was

我可以为单词分配数字,然后设置为勾号,但我试图避免不必要的解决方法。

有人会有一个很好的例子吗?

这样的事情:

import matplotlib.pyplot as plt
import csv

x = []
y = []

with open('/home/shulby/Desktop/hist.txt','r') as csvfile:
    plots = csv.reader(csvfile, delimiter='|')
    for row in plots:
        x.append(int(row[0]))

plt.plot(x,y)
plt.xlabel('Words')
plt.ylabel('Frequency')
plt.title('Balanced Histogram')
plt.legend()
plt.show()

我只是不确定如何在这里对待“y”。

1 个答案:

答案 0 :(得分:0)

试试这个:

import matplotlib.pyplot as plt
import csv

x = []
y = []

with open('/home/shulby/Desktop/hist.txt','r') as csvfile:
    plots = csv.reader(csvfile, delimiter='|')
    for row in plots:
        y.append(int(row[0]))

N = len(y)
x = range(N)
plt.plot(x,y)
plt.xlabel('Words')
plt.ylabel('Frequency')
plt.title('Balanced Histogram')
plt.legend()
plt.show()