【发布时间】:2018-11-21 11:46:54
【问题描述】:
我想返回占据特定区域的散点数。通常,我会使用2dhistogram 和pcolormesh 来做到这一点。
但是,如果我想设置表示不代表网格的不规则尺寸的 bin 坐标,我该怎么做呢?
以下是我的数据集示例。
import matplotlib.pyplot as plt
import matplotlib as mpl
import math
import numpy as np
x1 = np.random.randint(80, size=(400, 10))
y1 = np.random.randint(80, size=(400, 10))
x2 = np.random.randint(80, size=(400, 10))
y2 = np.random.randint(80, size=(400, 10))
fig, ax = plt.subplots()
ax.grid(False)
plt.scatter(x1[0],y1[0], c = 'r', zorder = 2)
plt.scatter(x2[0],y2[0], c = 'b', zorder = 2)
ang1 = 0, 50
ang2 = 100, 50
angle = math.degrees(math.acos(5.5/9.15))
xy = 50, 50
Halfway = mpl.lines.Line2D((50,50), (0,100), c = 'white')
arc1 = mpl.patches.Arc(ang1, 65, 100, angle = 0, theta2 = angle, theta1 = 360-angle, lw = 2)
arc2 = mpl.patches.Arc(ang2, 65, 100, angle = 0, theta2 = 180+angle, theta1 = 180-angle, lw = 2)
Oval = mpl.patches.Ellipse(xy, 100, 100, lw = 3, alpha = 0.1)
ax.add_line(Halfway)
ax.add_patch(arc1)
ax.add_patch(arc2)
ax.add_patch(Oval)
plt.text(15, 75, '1', fontsize = 8)
plt.text(35, 90, '2', fontsize = 8)
plt.text(65, 90, '3', fontsize = 8)
plt.text(85, 75, '4', fontsize = 8)
ax.autoscale()
plt.draw()
我要设置的垃圾箱标记为 1-4。是否可以设置返回这些 bin 的坐标?
如果我可以设置这些坐标,那么我想返回每个散点所在的 bin。 输出:
更新:
如果我想要一个在散点图中的每一行的每个 bin 中显示 xy 的导出,我会写出 (x1[0], y1[0]) 并将数据转置以返回:
1 2 3 4
0 [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)]
那我把(x1[0], y1[0])改成(x1[1], y1[1])得到第二行数据。
1 2 3 4
1 [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)]
然后我会结合这些来创建:
1 2 3 4
0 [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)]
1 [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)]
我有 1000 行,所以我正在尝试创建一种方法来使用整个 (x1, y1) 为每行数据生成每个 bin 中的坐标。
预期输出:
1 2 3 4
0 [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)]
1 [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)]
2 [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)]
3 [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)]
4 [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)] [(x,y),(x,y)]
5....
6....
如果我尝试(x1, y1),我会收到错误:
err = (arc_vertices[:,0] - x)**2 + (arc_vertices[:,1] - y)**2 ValueError: operands could not be broadcast together with shapes (70,) (10,)
【问题讨论】:
标签: python pandas matplotlib histogram scatter