【问题标题】:Create loglog plot of histogram data in xy style - python matplotlib以 xy 样式创建直方图数据的 loglog 图 - python matplotlib
【发布时间】:2013-12-25 01:01:36
【问题描述】:

我有一个值列表(整数),我想在图表上显示其中每个值出现了多少次。 我已经从列表中创建了一个值和相应频率的字典,在此处搜索后,这似乎是最好的方法

我想将数据绘制在 xy loglog 图(带有连接线)上,而不是使用条形图。

使用时图表上的数据点按预期显示

plot.loglog(degree_frequencies.keys(),degree_frequencies.values()) 

但是,由于图表上的线将第一个键值“坐标”连接到第二个、第二个到第三个等并且是无序的,因此这会创建一条在整个地方跳跃的线,而不是一条线从左到右。

这是一个示例数据集 - 第一个“坐标”对的 x 值高于第二个

degree_frequencies  = {8: 1, 2: 6, 3: 1, 5: 2, 6: 2} 

(如果字典重新排列为 {2: 6, 3: 1, 5: 2, 6: 2, 8: 1},则该行看起来不错)

任何人都可以建议解决此问题的最佳方法吗?我想知道我是否需要首先以不同的方式处理列表,或者实际上是否有一种方法可以使用 matplotlib 绘制这样的数据。

我是一个相对缺乏经验的 Python 用户,但我花了一些时间在互联网和文档(我觉得很繁琐)上搜索,但没有找到答案。 易于理解/实施(在我的情况下)可能比优雅而复杂的解决方案(如果可能)更有帮助。

谢谢

【问题讨论】:

    标签: python dictionary matplotlib plot histogram


    【解决方案1】:
    x = sorted( degree_frequencies.keys( ) )
    y = [ degree_frequencies[ k ] for k in x ]
    plt.loglog( x, y )
    

    【讨论】:

    • 感谢您的回复 这似乎没有任何效果。我不确定为什么应该这样做,因为它不会改变将 k v 字典对传递给图形的顺序?我可能会遗漏一些东西(或者我可能没有足够清楚地解释我的困难)。我已经扩展了原始 Q,希望现在更有意义
    • @Fluff 对不起,我误解了你的问题,我会编辑我的答案
    • 嗨亚军 - 不用担心;首先,我可能没有很好地表达我的 OP。您更新的答案效果很好,对我来说也很有意义。双赢。非常感谢,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2014-07-17
    • 1970-01-01
    • 2022-08-12
    • 2014-03-27
    • 2011-10-30
    • 2016-12-18
    相关资源
    最近更新 更多