创建极坐标直方图网格 (python)

问题描述 投票:0回答:1

我想创建一个类似下图的子图,它应该包含25个极坐标直方图,我希望把它们一个个添加到图中.需要用python.我已经想好了我需要使用matplotlib,但似乎不能完全弄明白。

enter image description here

非常感谢

matplotlib histogram
1个回答
1
投票

你可以通过以下方法创建极轴网格。projection='polar'.

hist 创建一个直方图,也是在使用极轴时。注意 x 的单位是弧度,范围是 2π。当您明确地将二进制作为一个函数来使用时,它的效果最好。linspace 从0到2π(或从-π到π,取决于数据)。第三个参数 linspace 应该比你想要的完整圆的条数多一个。

关于 axs[i][j].hist(x, bins=np.linspace(0, 2 * np.pi, np.random.randint(7, 30), endpoint=True), color='dodgerblue', ec='black'):

  • axs[i][j] 汲取 j分集 i第三行
  • .hist 绘制直方图
  • x:放入垃圾箱的数值
  • bins=输入分仓(最低和最高之间的固定数字) x 或一些明确的边界;默认为10个固定边界)
  • np.random.randint(7, 30) 随机整数
  • np.linspace(0, 2 * np.pi, n, endpoint=True) 将0和2π之间的范围分为 n 等分。endpoint=True 在0处、2π处和2π处划定边界。n-2 中间的位置;当 endpoint=False 在0处会有一个边界,在 n-1 左右逢源
  • color='dodgerblue':直方图条的颜色将是蓝色的。
  • ec='black'签名: 边缘色 的酒吧将是黑色的
import numpy as np
import matplotlib.pyplot as plt

fig, axs = plt.subplots(5, 5, figsize=(8, 8),
                        subplot_kw=dict(projection='polar'))
for i in range(5):
    for j in range(5):
        x = np.random.uniform(0, 2 * np.pi, 50)
        axs[i][j].hist(x, bins=np.linspace(0, 2 * np.pi, np.random.randint(7, 30)), color='dodgerblue', ec='black')

plt.tight_layout()
plt.show()

grid of polar histograms

© www.soinside.com 2019 - 2024. All rights reserved.