主要问题:
我写了一个小的光线追踪代码。它被称为前向光线跟踪,因此光线实际上是在源处创建的,传播到唯一的镜像并被反射。然后我计算出每一条光线与我选择的一个平面的交点,我称之为探测器。我在探测器上得到的是(x,y)的散点图
import matplotlib.pyplot as plt
import numpy as np
import random
x = np.zeros(1000)
y = np.zeros(1000)
for i in range(len(x)):
x[i] = random.random()
y[i] = random.random()
plt.plot(x,y,'k,')
plt.show()
现在我正在寻找一种方法来表示点击的密度分布(强度)作为一个平滑的图像,比如this一个。在
因此每个像素的灰度值应该与周围斑块的密度相对应。但我所需要的一切都是三维数组,比如z=f(x,y)。在
也尝试过hexbin(),但它不够平滑,对于非常小的箱子来说,它变得太慢了,只和我的一样。在
有什么我可以用的吗?在
次要问题:
我需要增加另一个维度,因为我对入射光线的平行度感兴趣。一种选择是定义如下:
a=入射光线与探测器法线之间的角度
b=入射光线与y-z平面之间的角度(光线大致平行于该平面传播)
此量的平均值
每次命中平均值的偏差
我想把这两个信息合并到一个图中,给灰度加上颜色。这可行吗?在
我是编程新手,任何提示、解释或其他想法都将不胜感激。在
我不认为你能像你提到的那样,做一个二维图像。。。你需要第三维度来描述(x,y)处的信号强度。这里有一个简单又肮脏的例子:
基本上,你把数据当作来自CCD的2d图像,每个像素都包含信号强度。在
(实际上,我要补充的是,根据您要突出显示的数据,您可能希望使用散点图,但要改变点的大小/不透明度来显示您的信息。。。这取决于你想达到什么目的。)
我实际上不明白你想从光线强度中画出什么,但是如果你要考虑的是一条光线以一个角度撞击图像,你需要计算光线在平面上的投影强度。这与如何用Matplotlib绘制是不同的问题。在
我想你的主要问题包括两个主要步骤:首先,计算散射点的密度函数,然后实际绘制它。所以,如果有一个函数z=f(x,y),其中z是点(x,y)的估计密度,那么可以使用已经研究过的matplotlib方法。在
至于第一步,我建议您看看scipy.stats.kde中的内核密度估计例程。基本上是这样
然后可以计算每个点的密度
^{pr2}$相关问题 更多 >
编程相关推荐