Python 绘制 3D 直方图六边形
Python Plot 3D Histogram Hexagon
我正在测试 Broadcom 的 TOF 相机。
它有六边形像素。
我希望在构造函数的实用程序中以 3D 表示直方图。
我测试了 vedo 库。但我无法给出 Z 中的值并重新排列单元格并追踪到地面
from vedo import *
from vedo.pyplot import histogram
import numpy as np
N = 2000
x = np.random.randn(N) * 1.0
y = np.random.randn(N) * 1.5
# hexagonal binned histogram:
histo = histogram(x, y,
bins=100,
mode='hexbin',
xtitle="\sigma_x =1.0",
ytitle="\sigma_y =1.5",
ztitle="counts",
fill=True,
cmap='terrain',
)
# add a formula:
f = r'f(x, y)=A \exp \left(-\left(\frac{\left(x-x_{o}\right)^{2}}'
f+= r'{2 \sigma_{x}^{2}}+\frac{\left(y-y_{o}\right)^{2}}'
f+= r'{2 \sigma_{y}^{2}}\right)\right)'
formula = Latex(f, c='k', s=1.5).rotateX(90).rotateZ(90).pos(1.5,-2,1)
show(histo, formula, axes=1, viewup='z')
您可以使用例如
轻松创建它
from vedo import *
import numpy as np
settings.defaultFont = "Theemim"
vals = np.abs(np.random.randn(8*4)) # heights
cols = colorMap(vals, "RdYlBu")
items = []
k = 0
for i in range(8):
for j in range(4):
val = vals[k]
col = cols[k]
x, y, z = [i+j%2/2, j-j%2/6, val+0.01]
hexa = Circle([x,y], r=0.55, res=6)
hbar = hexa.extrude(val) # create the hex bar
hbar.lighting("default").flat().c(col)
txt = Text3D(precision(val,3), [x,y,z], s=.12, justify='center', c='k')
items += [hbar, txt]
k += 1
show(items, axes=dict(xtitle="x-cell"))
我正在测试 Broadcom 的 TOF 相机。
它有六边形像素。
我希望在构造函数的实用程序中以 3D 表示直方图。
我测试了 vedo 库。但我无法给出 Z 中的值并重新排列单元格并追踪到地面
from vedo import *
from vedo.pyplot import histogram
import numpy as np
N = 2000
x = np.random.randn(N) * 1.0
y = np.random.randn(N) * 1.5
# hexagonal binned histogram:
histo = histogram(x, y,
bins=100,
mode='hexbin',
xtitle="\sigma_x =1.0",
ytitle="\sigma_y =1.5",
ztitle="counts",
fill=True,
cmap='terrain',
)
# add a formula:
f = r'f(x, y)=A \exp \left(-\left(\frac{\left(x-x_{o}\right)^{2}}'
f+= r'{2 \sigma_{x}^{2}}+\frac{\left(y-y_{o}\right)^{2}}'
f+= r'{2 \sigma_{y}^{2}}\right)\right)'
formula = Latex(f, c='k', s=1.5).rotateX(90).rotateZ(90).pos(1.5,-2,1)
show(histo, formula, axes=1, viewup='z')
您可以使用例如
轻松创建它from vedo import *
import numpy as np
settings.defaultFont = "Theemim"
vals = np.abs(np.random.randn(8*4)) # heights
cols = colorMap(vals, "RdYlBu")
items = []
k = 0
for i in range(8):
for j in range(4):
val = vals[k]
col = cols[k]
x, y, z = [i+j%2/2, j-j%2/6, val+0.01]
hexa = Circle([x,y], r=0.55, res=6)
hbar = hexa.extrude(val) # create the hex bar
hbar.lighting("default").flat().c(col)
txt = Text3D(precision(val,3), [x,y,z], s=.12, justify='center', c='k')
items += [hbar, txt]
k += 1
show(items, axes=dict(xtitle="x-cell"))