是否可以通过在matplotlib中包含频率将二维散点图转换为三维?

时间:2016-04-29 16:51:06

标签: python matplotlib scatter-plot data-analysis scatter3d

xI有两个我比较的字段。它们都是名义,只有1和0。男性和女性,默认和没有默认(加上更多类似格式的数据)。如果你将它放入一个散点图中,你只会得到四个点,因为当然所有这些场景都会发生,但问题是在每种情况下会发生多少次。如果我可以通过翻转它看到它并看到每个点击中这四个点中的一个点的频率,那将是惊人的。

例如:

x = [1,0,0,0,...1,1,0,1]
y = [0,1,1,0,...1,0,1,0]

我有代码:

def scatterPlot3dFields():
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(x, y, ???)
    plt.show()

但是我不知道在z轴上放置什么来实现这一点。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

听起来你正在寻找np.histogram2d,这是一种确定二维数据频率(在出现次数意义上)的好方法。你可以尝试类似的东西:

import numpy as np

# data of 1s and 0s
n_points = 100
x = np.random.randint(2, size=n_points) # ([1, 0, 1, ... , 0, 0, 1])
y = np.random.randint(2, size=n_points) # ([0, 1, 1, ... , 1, 0, 1])

H, xedges, yedges  = np.histogram2d(x, y, bins=2)
# H = frequency from the four points (0, 0), (0,1), (1,0), and (1,1)
# H = ([21, 26], [32, 21]]) for example (must sum to n_points (100))

听起来你也想要想象频率。为此,您可以使用3D条形图(bar3d)。看看这个matplotlib example code