【问题标题】:Displaying the occurrences in a Histogram with tkinter使用 tkinter 在直方图中显示事件
【发布时间】:2020-04-18 13:17:37
【问题描述】:

亲爱的 StackOverflow 社区。我最近一直在研究 tkinter 和简单的 python 库。首先有一个想法,随机获取 1000 个字母,在找到它们的出现后,使用 tkinter 在直方图中显示答案。我已经通过了前两个步骤,并到达了 tkinter 直方图。

这是我到目前为止所做的:

import string
import random
from collections import Counter


a = []
for i in range(1001):
    lower_upper_alphabet = string.ascii_lowercase
    random_letter = random.choice(lower_upper_alphabet)
    a.append(random_letter)

print(Counter(a))

我只需要显示结果,这些结果在字典中,例如如下图:

【问题讨论】:

    标签: python python-3.x user-interface tkinter histogram


    【解决方案1】:

    #第 1 步:- 您可以将字典转换为 Dataframe,您可以参考文档 (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.from_dict.html)

    #第 2 步:- 将数据框绘制为直方图

    #第 3 步:- 在 tkinter 画布中嵌入 matplotlib 图形(假设您知道如何根据上面显示的输出进行操作)

    【讨论】:

      【解决方案2】:

      Matplotlibbar 方法就是为此而设计的:

      import matplotlib.pyplot as plt
      cnt = Counter(a)
      plt.bar(cnt.keys(), cnt.values(), align='center', alpha=0.5)
      plt.xlabel('Letters')
      plt.ylabel('Amounts')
      plt.show()
      

      如您所见,plt.bar 的输入是 x 轴的字母和它们的数量 y 轴。

      输出:

      注意:

      您可以在plt.show() 之前使用plt.savefig('letters.png') 命令来保存您的图像。

      【讨论】:

      • 非常感谢先生。真的,感激不尽!
      • 不客气。现在,您可以在matplotlib 中看到我设法做到了这一点。你还需要把它嵌入到 Tkinter 画布中吗?
      • 你可以改用plt.bar(cnt.keys(), cnt.values(), align='center', alpha=0.5)
      • 谢谢,当然。我在编写脚本时混合了类型,但由于某些奇怪的原因,这些类型以前无法访问;已编辑。
      猜你喜欢
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 2019-05-08
      • 1970-01-01
      • 2014-08-10
      相关资源
      最近更新 更多