2011-09-10 4 views
1

answer에있는 히트 맵 이미지를 생성하고 싶습니다. 차이가 나는 시도 무엇 0파이썬에서 히트 맵 생성하기

1 사이 값의 2 차원 배열을 수행 할 것입니다 :

def generate_x_y_vectors(prob_map): 
    multiplier = 100 
    xs = [] 
    ys = []  
    for y in range(len(prob_map)): 
     for x in range(len(prob_map[y])): 
      count = int(prob_map[y][x] * multiplier) 
      xs.extend([x] * count) 
      ys.extend([y] * count) 
    return (xs, ys) 

def heatmap(probabilities): 
    #probabilities is a 2d nxn array 
    n = len(probability_map) 
    gridsize = n + 1 
    (xs, ys) = generate_x_y_vectors(probability_map) 
    plt.figure() 
    plt.hexbin(xs, ys, C=None, gridsize=gridsize, mincnt=1) 
    plt.axis([0, n, 0, n]) 

이 가진 가장 큰 문제는되지 조정 gridsize이를 만들 수 있다는 것입니다 청초한지도 - 줄무늬 효과를 만드는 백색 공간의 끝/etc..

나는 지루한 포인트를 생성하지 않고이 작업을 수행하는 것이 훨씬 더 좋은 방법이라고 생각합니다.

이상적으로는 육각형을 그릴 지 여부에 대한 임계 값에 대한 메커니즘이 이상적입니다 (위에서 수행 한 것처럼).

나는 두 변수의 합이 어떤 값 n을 초과 할 수없는 간단한 2 변수 마르코프 체인을 가지고 있습니다. 각 초기 조건에 대해 확률이있는 배열이 있습니다. 따라서 히트 맵은 x < n-y 영역으로 둘러싸인 삼각형이됩니다.

+0

이것은 지금까지 시도한 것에 대해서는 아무 것도 말하지 않는 꽤 복잡한 질문입니다. 당신은 파이썬을 아는가? 단순히 코드를 작성하는 사람을 찾고 있습니까? 특히 당신이 시도한 것에 대해 더 많은 세부 사항을 부탁드립니다. 올바른 방향으로의 힌트 만 있으면 matplotlib를 살펴보십시오. – Vorticity

+0

설명해 주셔서 감사합니다. 헥스 빈이 당신이 찾고있는 것처럼 보이므로 올바른 길을 가고 있습니다. 그리드 크기는 어떻게 받고 있습니까? 줄무늬 효과를 말할 때 가로 줄무늬를 의미합니까? – Vorticity

답변

3

코드로 무엇을하고 싶은지 잘 모르겠습니다. 나는 이것을 다음과 같이 읽었습니다 :

"hexbin을 통해 2 차원 이미지를 표시하십시오".

"육각형을 표시하는 임계 값 표시기"부분은 육각 표시기의 mincnt 매개 변수처럼 보입니다. ('없으면, 셀에 mincnt보다 많은 점수를 가진 셀만 표시합니다'). 더 복잡한 일이 생기면 x, y, C에서 마스크 된 배열을 생성해야합니다.

원하는대로 할 수 있습니까?

import numpy as np 
import matplotlib.pyplot as plt 

def generate_x_y(prob_map): 
    s = prob_map.shape 
    x, y = np.meshgrid(np.arange(s[0]), np.arange(s[1])) 
    return x.ravel(), y.ravel() 

def heatmap(prob_map): 
    x, y = generate_x_y(prob_map) 
    plt.figure() 
    plt.hexbin(x, y, C=prob_map.ravel()) 

probs = np.random.rand(200, 200) 
heatmap(probs) 
plt.show() 

추가와 기능의 차이 :

probs = np.random.rand(200, 200) 
heatmap(probs) 
plt.show() 

는이 그림에서 볼 수있다 : 코드에서합니다 (포함 그렇다면은, 아래의 코드는 당신에게 시작점을 제공해야 줄무늬) :

enter image description here

내 코드에서) 그것이 있어야처럼 (무작위 :

enter image description here

+0

좋아요! C 매개 변수에 대한 문서를 면밀히 검사하면 도움이 되었습니까? :) q의 프레임을 "hexbin을 통해 2 차원 이미지를 플로팅하는 것"으로 생각하면 도움이되었습니다. 감사! – neuronotic

+0

환영합니다. 다행히 도울 수있어. :-) – xubuntix

관련 문제