我有一个带有用户名的文本文件以及用于以此格式发布推文的应用。这是文件中的一小部分样本。
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
如何将应用信息绘制为条形图或饼图?我不关心用户名。只是一个比较不同应用程序的图表。哪个图表库非常适合这样的简单图?
答案 0 :(得分: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()
答案 1 :(得分:0)
我使用了pygooglechart。这很简单,直观,而且很棒examples。
先检查this。
答案 2 :(得分:0)
Matplotlib是一个受欢迎的选项,它有很好的例子。
我个人使用PyX,我发现某些类型的图表比其他图表更简单。
答案 3 :(得分: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()