Python 中给定 r、theta 和 z 值的极坐标直方图

我有一个数据框,由特定磁力计站随时间的测量值组成,列对应于:

  • 它的纬度(我认为是半径)

  • 它的方位角

  • 在这个特定时间的测量量

我想知道一种将这个数据框绘制为测量变量的极坐标直方图的方法:即像这样:

http://img2.mukewang.com/61a5daa20001091704190334.jpg

我已经查看了特殊的直方图,physt但这允许我只输入 x,y 值,我对这一切感到很困惑。

有人可以帮忙吗?


收到一只叮咚
浏览 147回答 2
2回答

MM们

使用 可以轻松计算直方图numpy.histogram2d。可以使用 matplotlib 的pcolormesh.import numpy as np; np.random.seed(42)import matplotlib.pyplot as plt# two input arraysazimut = np.random.rand(3000)*2*np.piradius = np.random.rayleigh(29, size=3000)# define binningrbins = np.linspace(0,radius.max(), 30)abins = np.linspace(0,2*np.pi, 60)#calculate histogramhist, _, _ = np.histogram2d(azimut, radius, bins=(abins, rbins))A, R = np.meshgrid(abins, rbins)# plotfig, ax = plt.subplots(subplot_kw=dict(projection="polar"))pc = ax.pcolormesh(A, R, hist.T, cmap="magma_r")fig.colorbar(pc)plt.show()

呼如林

这似乎是您要查找的内容:https : //physt.readthedocs.io/en/latest/special_histograms.html#Polar-histogramfrom physt import histogram, binnings, specialimport numpy as npimport matplotlib.pyplot as plt# Generate some points in the Cartesian coordinatesnp.random.seed(42)x = np.random.rand(1000)y = np.random.rand(1000)z = np.random.rand(1000)# Create a polar histogram with default parametershist = special.polar_histogram(x, y)ax = hist.plot.polar_map()链接的文档包括更多带有颜色、bin 大小等的示例。编辑:我认为这需要一些调整才能使您的数据形成正确的形状,但我认为此示例说明了库的功能,并且可以根据您的用例进行调整:import randomimport numpy as npimport matplotlib.pyplot as pltfrom physt import special# Generate some points in the Cartesian coordinatesnp.random.seed(42)gen = lambda l, h, s = 3000: np.asarray([random.random() * (h - l) + l for _ in range(s)])X = gen(-100, 100)Y = gen(-1000, 1000)Z = gen(0, 1400)hist = special.polar_histogram(X, Y, weights=Z, radial_bins=40)# ax = hist.plot.polar_map()hist.plot.polar_map(density=True, show_zero=False, cmap="inferno", lw=0.5, figsize=(5, 5))plt.show()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python