2014-07-14 4 views
4

는 좀 플롯을 만들하기 matplotlib를 사용하고 그리고 내가 도움이 필요한 몇 가지 어려움으로 실행했다. 난 단지 컬러 축의 절반을 사용할 필요가 일관된 색상 구성표를 유지하기 위해하기 matplotlib 절반 색상 축

문제 1). 양수 값만 있으므로 0 값을 녹색으로, 중간 값을 노란색으로, 가장 높은 값을 빨간색으로 지정합니다. 이것에 가장 가깝게 일치하는 색 구성표는 gist_rainbow_r입니다. 그러나 그것의 위쪽 절반 만 원합니다.

문제 2)가 표시하는 플롯의 오른쪽에있는 년 Colorbar을 얻을 방법을 알아낼 수없는 것 또는 그것은 나를 축 레이블을 수 있도록하는 방법을.

그것은 당신이 당신이 컬러 맵에 사용할 색상의 특정 세트가있는 경우

cmap = plt.get_cmap('gist_rainbow_r') 
edosfig2 = plt.figure(2) 
edossub2 = edosfig.add_subplot(1,1,1) 
edossub2 = plt.contourf(eVec,kints,smallEDOS,cmap=cmap) 
edosfig2.show() 

답변

9

, 당신이 그것을 구축 할 수 있습니다하기 matplotlib의 latext 버전 WTH 아나콘다의 최신 버전을 사용하고, 도움이된다면 그것들에 기초해서. 예를 들면 : 당신이 어떤 특히 복잡한 칼라 맵의 상단 절반이 원하는 형태 않은 경우

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

cmap = LinearSegmentedColormap.from_list('name', ['green', 'yellow', 'red']) 

# Generate some data similar to yours 
y, x = np.mgrid[-200:1900, -300:2000] 
z = np.cos(np.hypot(x, y)/100) + 1 

fig, ax = plt.subplots() 

cax = ax.contourf(x, y, z, cmap=cmap) 
cbar = fig.colorbar(cax) 
cbar.set_label('Z-Values') 

plt.show() 

enter image description here

그러나

는, 당신은 범위 당신 '을 통해 컬러 맵을 평가하여 그 일부를 복사 할 수 있습니다 . 당신이 "최고"의 절반을 원하는 경우에 관심이 다시 예를 들어, 0.5 1에서 평가할 것 :

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

# Evaluate an existing colormap from 0.5 (midpoint) to 1 (upper end) 
cmap = plt.get_cmap('gist_earth') 
colors = cmap(np.linspace(0.5, 1, cmap.N // 2)) 

# Create a new colormap from those colors 
cmap2 = LinearSegmentedColormap.from_list('Upper Half', colors) 

y, x = np.mgrid[-200:1900, -300:2000] 
z = np.cos(np.hypot(x, y)/100) + 1 

fig, axes = plt.subplots(ncols=2) 
for ax, cmap in zip(axes.flat, [cmap, cmap2]): 
    cax = ax.imshow(z, cmap=cmap, origin='lower', 
        extent=[x.min(), x.max(), y.min(), y.max()]) 
    cbar = fig.colorbar(cax, ax=ax, orientation='horizontal') 
    cbar.set_label(cmap.name) 

plt.show() 

enter image description here

+0

대단히 감사합니다. 마지막 질문 하나. 내장 된 색상 맵과 같이 장면 전환을보다 연속적으로 만드는 방법은 무엇입니까? 이것들은 좋지만 전환은 매우 갑작 스럽습니다. –

+0

@RobertHembree - 내가 잘못 이해하지 않는 한'imshow' (연속적 임) 대신'contourf' (레벨 개수 설정)를 사용하기 때문에 갑자기 나타납니다. 아니면 당신이 묻는 것을 오해하고 있습니까? –

+0

당신이 제안한대로 imshow를 사용하면 내 문제가 해결 된 것 같습니다. 나는이 모든 것을 문서에서 꺼내려고했다. 고맙습니다. 그것은 모두 완벽하게 작동합니다. –