【问题标题】:Making a Histogramm from a nested List in Python从 Python 中的嵌套列表制作直方图
【发布时间】:2020-08-11 13:27:27
【问题描述】:

我有以下列表,我想用这些数据制作直方图,但我不知道该怎么做。

finished = [('https', 38), ('on', 33), ('with', 32), ('model', 28), ('com', 26), ('evaluation', 19), ('detection', 19), ('br', 18), ('models', 18), ("href='g3doc", 17), ('trained', 17)]

我尝试了以下方法:

import matplotlib.pyplot as plt
z=0
for i in finished:

    plt.hist(finished[z], bins = range(38))
    z=z+1
plt.show()

我总是对标签和值感到困惑。

谢谢你,祝你有美好的一天

【问题讨论】:

  • 这样做的预期结果是什么?你想达到什么目标? hist 绘制出现频率。您列表中的所有元组都不会出现多次。
  • 哦,好吧,对不起,这是一个单词列表,其中包含单词中单词的出现次数。所以 https 出现 38 次等等
  • 在这种情况下,您已经确定了计数。您不需要绘制直方图,而是绘制条形图。
  • 您想要的是条形图而不是直方图。它们不是一回事。
  • 区别在哪里?

标签: python list


【解决方案1】:

我会使用这样的条形图:

import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt

finished = [('https', 38), ('on', 33), ('with', 32), ('model', 28), ('com', 26), ('evaluation', 19), ('detection', 19), ('br', 18), ('models', 18), ("href='g3doc", 17), ('trained', 17)]
names = list(f[0] for f in finished)
values = list(f[1] for f in finished)

y_pos = np.arange(len(finished))

plt.figure(figsize=(20,10))
plt.bar(y_pos, values, align='center', alpha=0.5)
plt.xticks(y_pos, names)
plt.ylabel('Values')
plt.title('Word usage')

plt.show()

使用不同的数据格式可能会更好。但这适用于您的示例数据。

【讨论】:

    【解决方案2】:

    按照 cmets 中的建议,您要创建条形图

    import pandas as pd
    import matplotlib.pyplot as plt
    
    finished = [('https', 38), ('on', 33), ('with', 32), ('model', 28), ('com', 26), ('evaluation', 19), ('detection', 19), ('br', 18), ('models', 18), ("href='g3doc", 17), ('trained', 17)]
    df = pd.DataFrame(finished)
    ax = df.plot(kind="bar")
    ax.set_xticklabels(list(df.iloc[:,0].values))
    plt.xticks(rotation=90)
    

    【讨论】:

    • 单词应该是x'es,y应该是数字(词频)
    • 非常感谢。但这不是直方图吗?我已经搜索过了,他们使用了类似的方法。他们计算了单词并将它们放入字典中,然后绘制它们。这和我做的差不多吗?
    • @Thorte 您好,欢迎您。因此,您通常使用直方图来绘制数值的分布(通过在示例中创建 bin,您有一个带有数字 [6,8,3,1,2,3,3,2,3,4,5,7,8] 的随机列表;直方图将创建 bin,即第一个 bin 将是 1 到 3 之间的所有数字,然后计算该列表中有多少数字落在该箱中。但是在您的情况下(因为已经计算了单词),条形图与直方图提供的信息完全相似,另请参阅this 答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多