3

いくつかのヒストグラムデータを極軸にプロットしようとしていますが、正しく機能しないようです。以下に例を示します。見つかったカスタム投影を使用します 。matplotlib極座標プロットの角度を時計回りに上に0°にする方法を教えてください。散布図で機能するので、私の問題はヒストグラム関数にあると思います。これは一日中私を狂わせてきました、誰かが私が間違っていることを知っていますか...........

import random
import numpy as np
import matplotlib.pyplot as plt

baz = np.zeros((20))
freq = np.zeros((20))
pwr = np.zeros((20))
for x in range(20): 
    baz[x] = random.randint(20,25)*10
    freq[x] = random.randint(1,10)*10
    pwr[x] = random.randint(-10,-1)*10
baz = baz*np.pi/180.  

abins = np.linspace(0,2*np.pi,360)      # 0 to 360 in steps of 360/N.
sbins = np.linspace(1, 100) 
H, xedges, yedges = np.histogram2d(baz, freq, bins=(abins,sbins), weights=pwr)

plt.figure(figsize=(14,14))
plt.subplot(1, 1, 1, projection='northpolar')
#plt.scatter(baz, freq)
plt.pcolormesh(H)
plt.show()
4

1 に答える 1

3

mgrid(binsおよびsbinsと同様の特性を持つ)をpcolormeshコマンドに明示的に渡すと、コードが機能します。

以下は、コードに触発された例です。

import matplotlib.pyplot as plt
import numpy as np

#Generate the data
size = 200

baz = 10*np.random.randint(20, 25, size)*np.pi/180.
freq = 10*np.random.randint(1, 10, size)
pwr = 10*np.random.randint(-10, -1, size)

abins = np.linspace(0, 2*np.pi, 360)      # 0 to 360 in steps of 360/N.
sbins = np.linspace(1, 100, 50) 
H, xedges, yedges = np.histogram2d(baz, freq, bins=(abins,sbins), weights=pwr)

#Grid to plot your data on using pcolormesh
theta, r = np.mgrid[0:2*np.pi:360j, 1:100:50j]

fig, ax = plt.subplots(figsize=(14,14), subplot_kw=dict(projection='northpolar'))
ax.pcolormesh(theta, r, H)

ax.set_yticklabels([]) #remove yticklabels

plt.show()

ポーラー

于 2012-11-22T08:04:24.017 に答える