2017-04-07 1 views
1

matplotlib (imshow 함수)로 numpy 배열을 플로팅합니다. 크기는 1000 * 3000이고 값은 0에서 2000 사이의 부동 소수점입니다.imshow를 사용하여 matplotlib에서 반올림 한 값을 플롯하지 마십시오

최대 값이 약 10 일 때 (이는 테스트 용이었습니다) 제 그림에는 정확한 값이 있지만 그 진폭은 모두 값은 int로 반올림되므로 배열의 일부에서 뉘앙스를 볼 수 없습니다.

해당 문제에 해당하는 imshow의 매개 변수가 있습니까? 나는 두 번째 (cmap = None)로 생각했지만 성공하지 못했습니다. 실제 어레이가없는 반면

import numpy as np 
import matplotlib.pyplot as plt 
import random as rand 

data = np.zeros((10,10)) 

for i in range(10): 
    for j in range(10): 
     data[i,j] = 900 + 10*i + rand.random() 

plt.imshow(data) 
plt.show() 

하기 matplotlib 윈도우의 값이 모두 정수이다 : 여기

는 일례이다.

+1

A [, 최소 완벽한하고 검증 예 (http://stackoverflow.com/ 다음 Z 소수점 이하 4 자릿수 플로트되는 동안 x 및 y 좌표 값이 정수가되도록 I 코드를 수정 한 help/mcve) 도움이 될 것입니다. – DavidG

답변

1

좌표 포맷터를 수정할 수 있습니다. 공식적인 예는 here입니다. 또한, this 질문의 첫 번째 부분은 같은 일을하는 약간 다른 방식을 보여줍니다.

class Formatter(object): 
    def __init__(self, im): 
     self.im = im 
    def __call__(self, x, y): 
     z = self.im.get_array()[int(y), int(x)] 
     return 'x=%i, y=%i, z=%1.4f' % (x, y, z) 

data = np.zeros((10, 10)) 

for i in range(10): 
    for j in range(10): 
     data[i, j] = 900 + 10 * i + rand.random() 

fig, ax = plt.subplots() 
im = ax.imshow(data) 
ax.format_coord = Formatter(im) 

plt.show() 
+0

좌표 포맷터 예제가 올바르지 만이 대답의 포맷터는 기본 경우의 반 화소만큼 잘못되었습니다. – ImportanceOfBeingErnest

관련 문제