2017-04-30 1 views
1

"mappable"이 포함되지 않은 을 파이썬 라이브러리 matplotlib이 만든 그래프에 추가하려고합니다. 내가 말할 수있는 것에서 mapable은 등고선과 같은 어떤 종류의 객체이며 colormap이 매핑 될 수있는 이산 값을 가지고 있습니다. 내 경우에는 프로그래밍 방식으로 (회선)에 대한 호출을 생성하지만 mappable 개체에는 포함되어 있지 않습니다. 나는 mappable 개체가 이미 플롯에 있다고 가정하지 않는 colorbar에 대한 생성자/메서드를 볼 수 없습니다.맵핑이 포함되지 않은 그래프의 컬러 막대 만들기?

내 그래프는 지금까지처럼 보인다 (내가 좋은 이미지를 얻을 수없는 것,하지만 난이 작품 생각, 네 그 끔찍한 색상) 여기

enter image description here

코드의 SSCCE입니다 플롯되고 내가 문제를 내가 mappable 개체를하지 않고 colorbar을 만드는 방법이 경우

import matplotlib.pyplot as plt 
from matplotlib.colors import LinearSegmentedColormap 
from matplotlib.backends.backend_pdf import PdfPages 

colorDict = {'red': [(0.0, 1.0, 1.0), (1.0, 0.0, 0.0)], 'green': [(0.0, 0.0, 0.0), (1.0, 1.0, 1.0)], 'blue': [(0.0, 0.0, 1.0), (1.0, 0.0, 0.0)]} 
rgColorMap = LinearSegmentedColormap('RedGreen', colorDict, 10) 
seedColors = cm.get_cmap(rgColorMap, 10) 

graphPdf = PdfPages('Example.pdf') 
fig = plt.figure(figsize=(8.27, 11.69), dpi=100) 
for lineInd in range(1, 9): 
    plt.plot([x for x in range(1, 10)], [y*lineInd for y in range(1, 10)], color=seedColors(lineInd)) 

graphPdf.savefig(fig) 
graphPdf.close() 

을 위해 오전 방식으로 같은 그래프를 생성하는?

그룹 내 유일한 해결책은 내가 mappable로 루프에 플로팅 다음 루프가 완료되면 플로팅하고 데이터인가, 또는 mappable의 일종없이 colorbar를 인스턴스화하는 방법은 무엇입니까? 당신은 물론 당신의 자신의 ScalarMappable를 만들 수 있습니다

+0

아니 걱정, 나는 불분명 추가 질문을 삭제됩니다. – KDecker

답변

1

, 다음 색 배열 매핑 (sm.set_array())가해야

sm = plt.cm.ScalarMappable(cmap=...) 

.

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

colorDict = {'red': [(0.0, 1.0, 1.0), (1.0, 0.0, 0.0)], 'green': [(0.0, 0.0, 0.0), (1.0, 1.0, 1.0)], 'blue': [(0.0, 0.0, 1.0), (1.0, 0.0, 0.0)]} 
rgColorMap = matplotlib.colors.LinearSegmentedColormap('RedGreen', colorDict, 10) 
seedColors = plt.cm.get_cmap(rgColorMap, 10) 

sm = plt.cm.ScalarMappable(cmap=seedColors) 
sm.set_array(range(1, 9)) 
fig = plt.figure(figsize=(8.27, 11.69), dpi=100) 
for lineInd in range(1, 9): 
    plt.plot([x for x in range(1, 10)], [y*lineInd for y in range(1, 10)], color=seedColors(lineInd)) 


fig.colorbar(sm, ticks=range(1,9), boundaries=np.arange(0.5,9,1)) 

plt.show() 

enter image description here

관련 문제