【问题标题】:How to create a circular frequency histogram如何创建圆形频率直方图
【发布时间】:2021-09-29 20:54:39
【问题描述】:

尊敬的 stackoverflow 成员,

我想使用在文本文件中列为单列的每个 bin 的频率创建一个圆形频率直方图(玫瑰图)。如何在 python3 中使用 matplotlib.pyplot 和 numpy 做到这一点?

我使用在互联网上找到的代码进行了初步尝试,但是当我得到玫瑰图时,当它们应该彼此相邻时,它们会重叠。其他细节:每个箱的圆的半径应该是频率,但这也会改变并且与我的频率不匹配。 我希望我的垃圾箱从 0 度到 360 度,宽度为 10 度;例如:0-10、10-20 等

这是一个带有频率(frequencies.txt)的txt文件示例:

0
0
0
0
0
2
0
1
1
0
1
0
0
1
2
29
108
262
290
184
81
25
7
2
3
1
1
0
0
0
0
0
0
0
0
0

【问题讨论】:

    标签: python numpy matplotlib polar-coordinates


    【解决方案1】:

    您可以创建一个极坐标图。角度需要从度数转换为弧度数。

    frequencies = np.loadtxt('filename.txt') 将从文件 (docs) 中读取值。

    import numpy as np
    import matplotlib.pyplot as plt
    
    frequencies = [0, 0, 0, 0, 0, 2, 0, 1, 1, 0, 1, 0, 0, 1, 2, 29, 108, 262, 290,
                   184, 81, 25, 7, 2, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    
    fig = plt.figure()
    ax = plt.axes(polar=True)
    
    theta = np.radians(np.arange(0, 360, 10))
    width = np.radians(10)
    ax.bar(theta, frequencies, width=width,
           facecolor='lightblue', edgecolor='red', alpha=0.5, align='edge')
    ax.set_xticks(theta)
    plt.show()
    

    【讨论】:

    • JohanC,非常感谢这个代码确实有效。
    猜你喜欢
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2020-01-12
    • 1970-01-01
    • 2022-08-09
    • 2020-07-31
    • 2018-01-26
    相关资源
    最近更新 更多