2011-04-06 6 views
5

일부 데이터의 등고선 플롯을 만들고 싶지만 같은 값의 모든 필드 값을 사용할 수 있습니다. 이로 인해 matplotlib에서 오류가 발생합니다. 실제로 생성 할 컨투어가 없으므로 의미가 있습니다. 예를 들어, 아래 코드를 실행하면 오류가 발생하지만 두 번째 정의 인 zi을 삭제하면 예상대로 실행됩니다.Matplotlib - 단일 값을 사용한 등고선 플롯

균일 한 필드 인 경우 일부 데이터에 대해 "등고선"플롯을 만들 수 있습니까? 보통의 등고선 플롯처럼 보이기를 원합니다 (어떤 색으로 채워진 상자에 옆면에 색 막대를 표시하는 것입니다. 색 막대는 균일 한 색이거나 15 색의 범위를 나타낼 수 있습니다. '관심 없음).

코드 :

from numpy  import array 
import matplotlib.pyplot as plt 

xi = array([0., 0.5, 1.0]) 
yi = array([0., 0.5, 1.0]) 
zi = array([[0., 1.0, 2.0], 
      [0., 1.0, 2.0], 
      [0., 1.0, 2.0]]) 
zi = array([[1.0, 1.0, 1.0], 
      [1.0, 1.0, 1.0], 
      [1.0, 1.0, 1.0]]) 

CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k') 
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet) 
plt.colorbar() 
plt.show() 

답변

10

음, contourf는 완벽하게 처리가된다는 contour을합니다.

이유는 바로이 작업을 수행하지 : 거기에 균일 장, 그리고 라인 채워진 등고선 플롯, 그렇지 않은 경우

import numpy as np 
import matplotlib.pyplot as plt 

xi = np.array([0., 0.5, 1.0]) 
yi = np.array([0., 0.5, 1.0]) 
zi = np.ones((3,3)) 

try: 
    CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k') 
except ValueError: 
    pass 
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet) 

plt.colorbar() 
plt.show() 

이 방법, 당신은 (기본적으로, 녹색) 상자에 채워진를 얻을 수 있습니다.

enter image description here

관련 문제