수색…


기본 사용법

내장 된 색상 맵을 사용하는 것은 필요한 색상 pcolormesh 이름을 ( 색상 표 참조에 지정된 contourf ) 일반적으로 cmap 키워드 인수의 형태로 예상되는 그림 기능 (예 : pcolormesh 또는 contourf )으로 전달하는 것처럼 간단합니다.

import matplotlib.pyplot as plt
import numpy as np

plt.figure()
plt.pcolormesh(np.random.rand(20,20),cmap='hot')
plt.show()

가장 간단한 예

컬러 맵은 특히 2 차원 플롯에서 3 차원 데이터를 시각화하는 데 유용하지만 좋은 컬러 ​​맵은 적절한 3 차원 플롯을 훨씬 명확하게 만듭니다.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.ticker import LinearLocator

# generate example data
import numpy as np
x,y = np.meshgrid(np.linspace(-1,1,15),np.linspace(-1,1,15))
z = np.cos(x*np.pi)*np.sin(y*np.pi)

# actual plotting example
fig = plt.figure()
ax1 = fig.add_subplot(121, projection='3d')
ax1.plot_surface(x,y,z,rstride=1,cstride=1,cmap='viridis')
ax2 = fig.add_subplot(122)
cf = ax2.contourf(x,y,z,51,vmin=-1,vmax=1,cmap='viridis')
cbar = fig.colorbar(cf)
cbar.locator = LinearLocator(numticks=11)
cbar.update_ticks()
for ax in {ax1, ax2}:
    ax.set_xlabel(r'$x$')
    ax.set_ylabel(r'$y$')
    ax.set_xlim([-1,1])
    ax.set_ylim([-1,1])
    ax.set_aspect('equal')

ax1.set_zlim([-1,1])
ax1.set_zlabel(r'$\cos(\pi x) \sin(\p    i y)$')

plt.show()

조금 더 고급 예제

사용자 정의 색상 맵 사용

colormaps 참조에 정의 된 내장 된 색상 맵 (및 그 반대의 맵, 이름에 '_r' ) 외에도 사용자 정의 색상 맵을 정의 할 수 있습니다. 핵심은 matplotlib.cm 모듈입니다.

아래 예제는 cm.register_cmap 사용하는 매우 간단한 색상 표를 정의합니다. 단일 색상을 포함하고 데이터 범위에서 완전히 불투명하고 완전히 투명하게 보간되는 색상의 불투명도 (알파 값)를 사용합니다. 색상 맵의 관점에서 중요한 선은 cm 가져 오기, register_cmap 호출 및 plot_surface 색상 맵 전달입니다.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.cm as cm

# generate data for sphere
from numpy import pi,meshgrid,linspace,sin,cos
th,ph = meshgrid(linspace(0,pi,25),linspace(0,2*pi,51))
x,y,z = sin(th)*cos(ph),sin(th)*sin(ph),cos(th)

# define custom colormap with fixed colour and alpha gradient
# use simple linear interpolation in the entire scale
cm.register_cmap(name='alpha_gradient',
                 data={'red':   [(0.,0,0),
                                 (1.,0,0)],

                       'green': [(0.,0.6,0.6),
                                 (1.,0.6,0.6)],

                       'blue':  [(0.,0.4,0.4),
                                 (1.,0.4,0.4)],

                       'alpha': [(0.,1,1),
                                 (1.,0,0)]})

# plot sphere with custom colormap; constrain mapping to between |z|=0.7 for enhanced effect
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x,y,z,cmap='alpha_gradient',vmin=-0.7,vmax=0.7,rstride=1,cstride=1,linewidth=0.5,edgecolor='b')
ax.set_xlim([-1,1])
ax.set_ylim([-1,1])
ax.set_zlim([-1,1])
ax.set_aspect('equal')

plt.show()

알파 그래디언트가있는 예

좀 더 복잡한 시나리오에서는 대응하는 플롯에서 사용되는 색상을 결정하기 위해 matplotlib이 선형 적으로 보간하는 R / G / B (/ A) 값의 목록을 정의 할 수 있습니다.

지각 적으로 균일 한 색상 맵

jet 라고하는 MATLAB의 원래 기본 색상 표 (R2014b 버전에서 대체 됨)는 높은 명암비와 친숙성으로 인해 어디에서나 볼 수 있습니다 (호환성 문제로 인해 matplotlib의 기본값이었습니다). 인기를 얻었음에도 불구하고, 기존의 색상 맵 은 데이터를 정확하게 표현할 때 종종 결함 이 있습니다. 이러한 색상 맵에서 변경된 사항은 데이터의 변경 사항과 일치하지 않습니다. 컬러 맵을 회색조로 변환 (예 : 흑백 프린터를 사용하여 그림 인쇄)하면 정보가 손실 될 수 있습니다.

지각 적으로 균일 한 색상 맵을 사용하여 가능한 한 정확하고 액세스 가능한 데이터 시각화를 구현했습니다. Matplotlib은 버전 1.5에서 네 가지 (지명 된 viridis ) 버전 2.0의 네 가지 지각적인 균일 한 색상 표소개 했습니다. 이 4 개의 컬러 맵 ( viridis , inferno , plasmamagma )은 인식의 관점에서 모두 최적이며, 그렇게하지 않는 좋은 이유가 없다면 기본적으로 데이터 시각화에 사용되어야합니다. 이 색상 맵은 가능한 한 편향을 최소화하고 (처음에는 특징이없는 부분을 만들지 않음) 색상 인식이 감소 된 청중에게 적합합니다.

시각적으로 데이터를 왜곡하는 예제로 피라미드 형 오브젝트의 다음 두 가지 평면도를 고려하십시오.

상단에서 두 개의 피라미드 모양의 물체

어느 쪽이 적절한 피라미드인가요? 대답은 물론 둘 다 그렇지만 이것은 jet colormap을 사용하는 플롯에서 분명하지 않습니다.

두 colormaps, 피라미드의 3d보기 제트 대 viridis

이 기능은 지각적인 통일성의 핵심입니다.

사용자 정의 개별 색상 표

사전 정의 된 범위가 있고 해당 범위에 특정 색상을 사용하려면 사용자 정의 색상 맵을 선언 할 수 있습니다. 예 :

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors

x = np.linspace(-2,2,500)
y = np.linspace(-2,2,500)
XX, YY = np.meshgrid(x, y)
Z = np.sin(XX) * np.cos(YY)

cmap = colors.ListedColormap(['red', '#000000','#444444', '#666666', '#ffffff', 'blue', 'orange'])
boundaries = [-1, -0.9, -0.6, -0.3, 0, 0.3, 0.6, 1]
norm = colors.BoundaryNorm(boundaries, cmap.N, clip=True)

plt.pcolormesh(x,y,Z, cmap=cmap, norm=norm)
plt.colorbar()
plt.show()

생산하다

샘플 출력

색상 i 는 경계 ii + 1 사이의 값에 사용됩니다. 색상은 이름 ( 'red' , 'green' ), HTML 코드 ( '#ffaa44' , '#441188' ) 또는 RGB 튜플 ( (0.2, 0.9, 0.45) )으로 '#441188' 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow