2016-04-29 1 views
0

У меня есть два поля, которые я сравниваю. Оба они номинанты, только с одними и с нулями. Мужчины и женщины, а также по умолчанию и без дефолта (плюс много больше данных в аналогичном формате). Если вы поместите его в график рассеяния, вы получите только четыре точки, потому что, конечно, все эти сценарии происходят, но вопрос в том, сколько раз это происходит в каждом случае. Было бы удивительно, если бы я мог видеть это, перевернув его на бок и увидев частоту того, сколько раз каждая точка попадает в одну из этих четырех точек.Можно ли превратить 2d-график в 3d, включив частоту в matplotlib?

, например:

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() 

Но я понятия не имею, что положить в оси г, чтобы это произошло. Любая помощь будет потрясающей.

+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)) 

Это также звучит так, будто вы хотите визуализировать частоту. Для этого вы можете использовать трехмерную гистограмму (bar3d). Проверьте это matplotlib example code.

Смежные вопросы