【问题标题】:Most efficient way to plot Histogram using dictionary? [duplicate]使用字典绘制直方图的最有效方法? [复制]
【发布时间】:2021-02-06 22:01:28
【问题描述】:

我正在分析 Python 中的国际象棋游戏,并试图生成 每局棋步数的直方图。目标是获得类似于此可视化的内容,其中似乎平均每场比赛有 70 步:

目前我有一个无序的dict

{'106': 38,
 '100': 46,
 '65': 58,
 '57': 47,
 '54': 31,
 '112': 29,
 '93': 35,
 '91': 44,
 ...
 '109': 35,
 '51': 26}

其中键表示移动次数,值表示游戏次数

我发现提取字典数据以绘制直方图非常困难。我已尝试提取到数据框,但无法以 matplotlib/seaborn 可读格式获取它。

【问题讨论】:

    标签: python matplotlib seaborn data-visualization chess


    【解决方案1】:

    这对你有用吗?

    import matplotlib.pyplot as plt
    dict = {'106': 38,...}
    plt.bar([int(d) for d in dict.keys()], dict.values())
    plt.show()
    

    【讨论】:

      【解决方案2】:

      首先,我们将使用字典理解对您的字典进行排序:

      d = {'106': 38,
       '100': 46,
       '65': 58,
       '57': 47,
       '54': 31,
       '112': 29,
       '93': 35,
       '91': 44,
       '109': 35,
       '51': 26}
      
      sorted_d = {key:d[key] for key in sorted(d, key = lambda x: int(x))}
      

      现在我们用 barplot 显示它:

      import seaborn as sns
      sns.barplot(x=list(sorted_d .keys()), y = list(d.sorted_d ()))
      

      这是你得到的结果:

      如果你不对字典进行排序,你会得到这个:

      【讨论】:

        猜你喜欢
        • 2014-02-07
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 1970-01-01
        • 2014-06-28
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        相关资源
        最近更新 更多