2

我有一个带有用户名的文本文件以及他们用于以这种格式发布推文的应用程序。这是文件中的一个小样本。

John, Twitter for iPhone
Doe, web
Jack, Twitter for Android
foo, Twitter for iPhone
bar, Twitter for iPhone
foo1, TweetDeck
John1, Twitter for iPhone
Doe2, web
Jack3, Twitter for Android
foo2, Twitter for iPhone
bar2, Twitter for iPhone
foo3, Tweet Button
a1,Twitter for iPhone
a2,web
s1,Mobile Web
s2,Twitter for iPhone
s3,Twitterrific

如何将应用程序信息绘制为条形图或饼图?我不在乎用户名。只是一个比较不同应用程序的图表。哪个图表库非常适合像这样的简单绘图?

4

4 回答 4

3

下面是一些示例代码,可帮助您开始使用Matplotlib. 我假设您已将数据保存到名为data.txt.

import matplotlib.pyplot as plt

apps = {}

with open('data.txt', 'r') as f:
    lines = f.readlines()

for line in lines:
    app = line.split(',')[1].strip()
    if app not in apps:
        apps[app] = 1
    else:
        apps[app] += 1

data = [(k,apps[k]) for k in apps]
data_s = sorted(data, key=lambda x: x[1])

x = [app[1] for app in data_s]
l = [app[0] for app in data_s]
plt.pie(x)
plt.legend(l, loc='best')

plt.show()
于 2012-05-30T16:55:09.760 回答
0

我重用了@Brandan 的代码,并且(会尊重)通过引入collections.Counter来改进它

import matplotlib.pyplot as plt
import collections

with open('data.txt', 'r') as f:
    data_s = collections.Counter([line.split(',')[1].strip() for line in f.readlines()]).most_common()


x = [app[1] for app in data_s]
l = [app[0] for app in data_s]
plt.pie(x)
plt.legend(l, loc='best')

plt.show()
于 2012-05-30T17:30:34.547 回答
0

Matplotlib是一个流行的选项,它有很好的例子。

我个人使用过PyX,我发现它对于某些类型的图表比其他图表更简单。

于 2012-05-30T16:47:41.250 回答
0

我用pygooglechart。它简单、直观并且有很好的例子

先看看这个

于 2012-05-30T16:46:31.250 回答