Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以360/7度间隔将散点图划分为多个部分_Python_Matplotlib_Scatter Plot - Fatal编程技术网

Python 以360/7度间隔将散点图划分为多个部分

Python 以360/7度间隔将散点图划分为多个部分,python,matplotlib,scatter-plot,Python,Matplotlib,Scatter Plot,我已经根据散点图上的数据集绘制了一组点。这些点表示探测器上的“命中”(尺寸为2000 mm x 2000 mm),因此每次命中表示探测器上与粒子着陆位置对应的特定x和y坐标。图的中心是(0,0),而向左是负x值,向右是正x值。向上也是正y值,向下是负y值。我试图将此图分成7个部分,每条线从图的中心(0,0)开始并延伸到图的边缘(因此R=2000)。每条线应分开2pi/7 rads(或360/7度),以便将所有点组织成这些部分 我不知道如何开始,因为我对python比较陌生。我附上了一张图本身的图

我已经根据散点图上的数据集绘制了一组点。这些点表示探测器上的“命中”(尺寸为2000 mm x 2000 mm),因此每次命中表示探测器上与粒子着陆位置对应的特定x和y坐标。图的中心是(0,0),而向左是负x值,向右是正x值。向上也是正y值,向下是负y值。我试图将此图分成7个部分,每条线从图的中心(0,0)开始并延伸到图的边缘(因此R=2000)。每条线应分开2pi/7 rads(或360/7度),以便将所有点组织成这些部分

我不知道如何开始,因为我对python比较陌生。我附上了一张图本身的图像,以及我为这个图编写的代码。任何有帮助的,谢谢大家

c1 = np.logical_and(np.logical_and((hitpz1 > 0), (hitdet1 == (Detector))), (hitpid1 == 11))
plt.plot(hitx1[c1].flatten(), hity1[c1].flatten(), '.', color = 'g')
plt.ylabel("Particle Y Position (mm)")
plt.xlabel("Particle X Position (mm)")
plt.title("Particle by Radial Position, (Detector 28, Elastic)")
plt.xlim(-2000,2000)
plt.ylim(-2000,2000)
plt.show()

可以通过线集合来表示和绘制线。由于绘图似乎具有某种旋转对称性,因此将纵横比设置为1可能很有用

画线的另一种方法是根据点的区域给点上色

将numpy导入为np
将matplotlib.pyplot作为plt导入
从matplotlib.collections导入LineCollection
#首先,创建一些虚拟测试数据
N=500
θ=np.random.normal(0,0.15,N)+np.random.randint(0,7,N)*2*np.pi/7+np.pi
r=np.随机.正态(1,0.2,N)**2*1000
x=r*np.cos(θ)
y=r*np.sin(θ)
图,轴=plt.子批次(ncols=2,figsize=(9,4))
对于轴中的ax:
如果ax==轴[0]:
最大散射(x,y,color='limegreen',s=5)
#创建并绘制七条线段
segs=np.零((14,2))
对于范围(0、14、2)内的i:
segs[i,0]=5000*np.cos(2/7*i*np.pi)
segs[i,1]=5000*np.sin(2/7*i*np.pi)
线段=线集合([segs],线宽=1,颜色为深红色,线型为实心)
ax.添加集合(直线段)
其他:
#根据每个点的区域为其上色
z=np.楼层((θ)/(2*np.π)*7)
cmap=plt.cm.get_cmap('Set1',7)
最大散射(x,y,c=z,cmap=cmap,s=5)
ax.设置标签(“粒子Y位置(mm)”)
ax.设置标签(“粒子X位置(mm)”)
ax.设置标题(“粒子的径向位置”)
ax.set_xlim(-20002000)
ax.set_ylim(-20002000)
ax.set_方面(1)
plt.紧_布局()
plt.show()

您可以使用trig函数获取角度/半径组合的X、Y坐标,对吗?你想从你中心的点(0,0)向外画到那个点。你可以看到答案,看看如何画一条线。你所需要做的就是计算每一条线延伸到的X,Y坐标,并从中心到那里为每个角度画一条线。这能回答你的问题吗?