plt.xlabel('Half Time Result')
plt.ylabel('Full Time Result')
plt.scatter(htr, ftr, marker='.', color='black')
plt.savefig('htrvsftr')
答案 0 :(得分:2)
您可以添加一些随机抖动,例如,为每个坐标添加一个小的高斯随机值:
import numpy as np
import matplotlib.pyplot as plt
htr = np.random.randint(1, 9, 500)
ftr = np.random.randint(1, 6, 500)
plt.xlabel('Half Time Result')
plt.ylabel('Full Time Result')
plt.scatter(htr + np.random.normal(0, .1, htr.size), ftr + np.random.normal(0, .1, ftr.size),
marker='.', color='black')
plt.show()
除了np.random.normal(0, .1)
以外,还可以使用均匀分布,例如np.random.uniform(-.4, .4)
。如果还有更多的重合点,则可以另外设置一个alpha
值。
为了更好地显示差异,可以绘制二维直方图,例如通过seaborn's jointplot。
当x和y值为字符串类型时,您可以从散点图中提取偏移位置,添加随机抖动并更新位置:
import numpy as np
import matplotlib.pyplot as plt
htr = np.random.choice(['H', 'D', 'A'], 500)
ftr = np.random.choice(['H', 'D', 'A'], 500)
scatter_dots = plt.scatter(htr, ftr, marker='.', color='black', alpha=0.3)
xy = scatter_dots.get_offsets()
scatter_dots.set_offsets(xy + np.random.normal(0, .1, size=xy.shape))
plt.xlabel('Half Time Result')
plt.ylabel('Full Time Result')
plt.xlim(-0.5, 2.5)
plt.ylim(-0.5, 2.5)
plt.show()
jointplot
可能是这样的:
import seaborn as sns
sns.jointplot(x=htr, y=ftr, kind="hist",
joint_kws={'bins': (np.arange(-0.5, 3), np.arange(-0.5, 3))},
marginal_kws={'lw': 1})