Arrays 如何将二维散点图折叠为点图?

Arrays 如何将二维散点图折叠为点图?,arrays,python-3.x,numpy,scatter-plot,scatter,Arrays,Python 3.x,Numpy,Scatter Plot,Scatter,我有一个非常大的2d形状数组(186295,2),每个2元素子数组的第一个元素是x,第二个元素是y。以下是我如何通过在matplotlib中分离x和y分量来生成散点图: ax.scatter(A[:, 0]+np.random.uniform(-.02, .02, A.shape[0]), A[:, 1], s=2, color='b', alpha=0.5, zorder=3) 不过,我想 x值在[8,9.2]范围内的所有点在中点x=8.6处显示为点图 x值在[9.2,10.4]范围内的所

我有一个非常大的2d形状数组(186295,2),每个2元素子数组的第一个元素是x,第二个元素是y。以下是我如何通过在
matplotlib
中分离x和y分量来生成散点图:

ax.scatter(A[:, 0]+np.random.uniform(-.02, .02, A.shape[0]), A[:, 1], s=2, color='b', alpha=0.5, zorder=3)

不过,我想

x值在[8,9.2]范围内的所有点在中点x=8.6处显示为点图

x值在[9.2,10.4]范围内的所有点在中点x=9.8处显示为点图

x值在[10.4,12.2]范围内的所有点在中点x=11.3处显示为点图

非常感谢您的帮助,

您可以使用:

例如:

import numpy as np
from matplotlib import pyplot as plt

n=100
x = np.random.uniform(8, 12, n)
y = np.random.uniform(.01, 1, n)
a = np.array(list(zip(x,y)))


fig,ax = plt.subplots(2, sharex=True)
ax[0].scatter(a[:,0], a[:,1])
ax[0].title.set_text('Scatter Plot')

conditions = [a[:,0]<=8, a[:,0]<=9.2, a[:,0]<=10.4, a[:,0]<=12.2, a[:,0]>12.2]
choices = [a[:,0], 8.6, 9.8, 11.3, a[:,0]]
a[:,0] = np.select(conditions, choices)

ax[1].scatter(a[:,0], a[:,1])
ax[1].title.set_text('Dot Plot')
将numpy导入为np
从matplotlib导入pyplot作为plt
n=100
x=np.随机均匀(8,12,n)
y=np.随机.均匀(.01,1,n)
a=np.array(列表(zip(x,y)))
图,ax=plt.子批次(2,sharex=True)
ax[0]。分散(a[:,0],a[:,1])
ax[0]。标题。设置文本(“散点图”)

条件=[a[:,0]谢谢,我从来没有想到过这一点,因为我们知道所有东西都有[8,12.2]之间的x值,为什么我们不将条件定义为8在这种特殊情况下,你可以这样做,但在一般情况下,如果你的值超出了定义的间隔,那么它们将被设置为零(除非将默认值作为第三个参数传递给np.select)