2013-04-19 4 views
1

나는 이것을 원하는 것처럼 작동하도록 고심하고 있지만 올바른 방법으로 얻을 수는 없습니다. 문제는 다음과 같습니다. 필자는 pylab.figure에 표시하려고하는 x, y 함수로 생성 된 일부 2D 데이터를 가지고 있습니다.matplotlib 부동 데이터 범위가있는 2 차원 데이터

입력 데이터가 같은 같다 : x의 지금이 데이터를 생성 pylab.figure에 표시 할 I는 600 × 600의 값을 발생이 사용 scipy의 RectBivariateSpline 가입일

range1_labels = [0.002, 0.006, 0.010, 0.014, 0.018] 
range2_labels = [10, 25, 80] 
data_values = 2d array with dimensions (len(x_values), len(y_values)) 

있지만 갖는 값과 그 간격에서 y 축 레이블. 시도는 지금까지 수행이 시도는 여전히 나에게 두 축 레이블 [0, 100, 200, 300, 400, 500]을 제공

axes = figure.gca() 
    img = axes.matshow(posteriori_data) 
    axes.set_title("Interpolated values") 
    figure.colorbar(img) 

    axes.set_yticks(range(len(range2_labels)), range2_labels) 
    axes.set_xticks(range(len(range1_labels)), range1_labels) 

.

내가하려고 또 다른 한가지는 다음과 같습니다

axes = figure.gca() 
    img = axes.matshow(posteriori_data, extent=(min(range1_labels), max(range1_labels), 
               min(range2_labels), max(range2_labels)), 
         aspect='auto') 
    axes.set_title("Interpolated values") 
    figure.colorbar(img) 

이 내가 원하는 무엇에 가까운 것 같다. '더 큰'축의 경우 레이블이 제대로 생성되고 확대/축소시에도 레이블이 올바르게 다시 계산됩니다. 위의 예에서 range2의 레이블은 예상대로 나타나지만 range1의 레이블은 생성되지 않습니다.

모든 포인터?

감사

답변

1

문제는 범위가 너무 작고, 틱 로케이터가 정상적으로이 극복되지 않는 것입니다. 같은

뭔가 :

data = rand(600,600) 
extent = [.002, .018, 10, 80] 

ax = gca() 
ax.matshow(data, extent=extent, aspect='auto') 
ax.get_xaxis().set_major_locator(matplotlib.ticker.LinearLocator(5)) 

plt.draw() 

당신이 원하는 것을 할 것입니다.

이 비트로 파고 들며, 무슨 일이 일어나는 것입니까? matshow은 매트릭스를 표시하기 위해 조정 된 기능입니다. 설정하는 로케이터는 MaxNLocator이며, 정수 값 (doc)에만 눈금을 표시하도록하는 플래그 integer이 있습니다. 행렬을 플롯하는 경우 이는 의미가 있습니다. 귀하의 경우 범위를 1 미만으로 설정하므로 틱이 없습니다.

대체 솔루션이이 imshow

data = rand(600,600) 
extent = [.002, .018, 10, 80] 

ax = gca() 
ax.imshow(data, extent=extent, aspect='auto', interpolation='nearest') 

plt.draw() 

사용하는 것입니다, 당신은 당신이 구현에서 유지하고, 원하지 않는 것을 삭제하려는 기능을 복사 할 수 있습니다 (src)를 않는 사실 어떤 matshow .

관련 문제