创建极坐标直方图网格 (python)
Creating a grid of polar histograms (python)
我想创建一个如下图所示的子图,
它应该包含 25 个极坐标直方图,我希望将它们一个一个地添加到图中。
需要在 python。
我已经想到我需要使用 matplotlib,但似乎无法完全弄清楚。
非常感谢!
您可以通过 projection='polar'
创建极轴网格。
hist
创建直方图,在使用极轴时也是如此。请注意,x 以弧度为单位,范围为 2π。当您将 bin 明确指定为从 0 到 2π(或从 -π 到 π,具体取决于数据)的 linspace
时,效果最佳。 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]
在第 i
行的第 j
个子图中绘制
.hist
创建直方图
x
:放入 bins 的值
bins=
:进入 bins(最低和最高之间的固定数字 x
或一些明确的边界;默认为 10 个固定边界)
np.random.randint(7, 30)
7 到 29 之间的随机整数
np.linspace(0, 2 * np.pi, n, endpoint=True)
将0到2π之间的范围分成n
等份; endpoint=True
在 0、2π 和两者之间的 n-2
位置处设置边界;当 endpoint=False
将在 0 处有一个边界,在中间的 n-1
个位置,但在末尾 none
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()
我想创建一个如下图所示的子图, 它应该包含 25 个极坐标直方图,我希望将它们一个一个地添加到图中。 需要在 python。 我已经想到我需要使用 matplotlib,但似乎无法完全弄清楚。
非常感谢!
您可以通过 projection='polar'
创建极轴网格。
hist
创建直方图,在使用极轴时也是如此。请注意,x 以弧度为单位,范围为 2π。当您将 bin 明确指定为从 0 到 2π(或从 -π 到 π,具体取决于数据)的 linspace
时,效果最佳。 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]
在第i
行的第j
个子图中绘制.hist
创建直方图x
:放入 bins 的值bins=
:进入 bins(最低和最高之间的固定数字x
或一些明确的边界;默认为 10 个固定边界)np.random.randint(7, 30)
7 到 29 之间的随机整数np.linspace(0, 2 * np.pi, n, endpoint=True)
将0到2π之间的范围分成n
等份;endpoint=True
在 0、2π 和两者之间的n-2
位置处设置边界;当endpoint=False
将在 0 处有一个边界,在中间的n-1
个位置,但在末尾 nonecolor='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()