[PYTHON] matplotlib plot_surface 명령의 Colorbar
PYTHONmatplotlib plot_surface 명령의 Colorbar
폴의 도움으로 응용 프로그램의 mplot3d 예제 코드를 수정했습니다. 코드를 읽습니다.
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
z1 = z * np.cos(0.5*x)
N = z1 / z1.max() # normalize 0..1
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=cm.jet(N), linewidth=0, antialiased=False, shade=False)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
이 코드는 표면을 플롯하는데 유용합니다. 그러나 위의 그림에 컬러 바를 추가하려고하면 다음과 같은 오류가 발생합니다.
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
File "C:\Python26\lib\site-packages\spyderlib\widgets\externalshell\startup.py", line 122, in runfile
execfile(filename, glbs)
File "C:\Documents and Settings\mramacha\My Documents\Python\Candela\test.py", line 22, in <module>
fig.colorbar(surf, shrink=0.5, aspect=5)
File "C:\Python26\lib\site-packages\matplotlib\figure.py", line 1104, in colorbar
cb = cbar.Colorbar(cax, mappable, **kw)
File "C:\Python26\lib\site-packages\matplotlib\colorbar.py", line 706, in __init__
mappable.autoscale_None() # Ensure mappable.norm.vmin, vmax
File "C:\Python26\lib\site-packages\matplotlib\cm.py", line 261, in autoscale_None
raise TypeError('You must first set_array for mappable')
TypeError: You must first set_array for mappable
나는 누군가가 이것으로 나를 인도 할 수 있다면 정말 감사 할 것입니다.
프라 부
해결법
-
==============================
1.서페이스 배열이 매핑되지 않았으므로 프록시 가능한 객체를 사용할 수 있습니다. mappable은 모든 배열의 값을 색상 맵에 정의 된 RGB 색상으로 간단하게 변환합니다.
서페이스 배열이 매핑되지 않았으므로 프록시 가능한 객체를 사용할 수 있습니다. mappable은 모든 배열의 값을 색상 맵에 정의 된 RGB 색상으로 간단하게 변환합니다.
귀하의 경우 z1 배열을 사용하여이 작업을 수행하고자합니다.
import matplotlib.cm as cm m = cm.ScalarMappable(cmap=cm.jet) m.set_array(z1) plt.colorbar(m)
from https://stackoverflow.com/questions/6600579/colorbar-for-matplotlib-plot-surface-command by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 어떻게 numpy 배열에 열을 추가하려면 (0) | 2018.10.22 |
---|---|
[PYTHON] 언제 sqlalchemy back_populates를 사용해야합니까? (0) | 2018.10.22 |
[PYTHON] 배열 블록 내에서 값의 합을 계산하는 방법 (0) | 2018.10.22 |
[PYTHON] 파이썬에서 개별 픽셀 값으로 이미지를 그리는 가장 빠른 방법은 무엇입니까? (0) | 2018.10.22 |
[PYTHON] 모듈의 모든 기능을 나열 할 수 있습니까? [복제] (0) | 2018.10.22 |