2017-01-24 10 views
0

APLpy를 사용하여 오른쪽 승강 공간에서 음영 처리하고자하는 폴리곤이 있는데 다른 폴리곤은 다른 1D 목록에 의해 색칠되어 있지만 작동하려면 show_polygons()을 얻을 수 없습니다. aplpy ​​colorised faces가있는 show_polygons()

나는 APLpy show markers normalized by a colormap에서 답을 적응하려고하지만 난 그것을 실행할 때, show_polygons()는 kwargs로 cmap, norm, 또는 c show_markers()가하는 같은 방법을 이해하지 않습니다.

내 적응, 독립형 스크립트 : 사물의

AttributeError: Unknown property cmap 
AttributeError: Unknown property norm 
AttributeError: Unknown property c 

내 버전 :

$ python --version 
Python 3.5.1 :: Continuum Analytics, Inc. 
$ python 
>>> import matplotlib 
>>> print(matplotlib.__version__) 
1.5.1 
>>> import aplpy 
>>> print(aplpy.__version__) 
1.1.1 

가 어떻게 show_polygons()를 얻을 수

import aplpy, numpy 
from numpy import array 
import matplotlib.pyplot as plt 
from matplotlib import cm, colors 

polygons = [array([[ 46.33681474, 34.75536787], 
    [ 45.04752709, 35.37650737], 
    [ 44.63035494, 34.73768723], 
    [ 46.33681474, 34.75536787]]), array([[ 46.45913142, 34.69050337], 
    [ 45.04717721, 35.37189917], 
    [ 44.6205633 , 34.72362768], 
    [ 46.45913142, 34.69050337]]), array([[ 46.52741447, 34.64997822], 
    [ 45.04457814, 35.36619781], 
    [ 44.60486296, 34.70107236], 
    [ 46.52741447, 34.64997822]])] 
zvalues = [ 1.02018589e-10, 9.38471764e-12, 2.15806865e-11] 

cmap1 = cm.YlOrBr 
norm1 = colors.Normalize(numpy.min(zvalues), numpy.max(zvalues)) 
fig = aplpy.FITSFigure(numpy.zeros((10,10))) 
fig.show_polygons(polygons, cmap=cmap1, norm=norm1, c=zvalues, facecolor='none') 
plt.save(fname='plot.png') 

이 다른 AttributeErrors 인상 show_polygons() 원인 실행 일하다?

답변

0

먼저, 플롯하려고하는 폴리곤 좌표가 플로팅하려는 픽셀 배열과 일치하지 않습니다. 플로팅하는 실제 크기에 문제가 없다고 가정 하긴하지만 말입니다. 그래서 당신이 대신 같은 뭔가 코드를 변경해야합니다

# fixed so that the polygons fall inside the image 
fig = aplpy.FITSFigure(numpy.zeros((50,50))) 
# zoom in on the coord values of the polygons 
fig.recenter(45.5, 35, 1.5) 

을 이제 실제로 질문에 대답 : 다른 matplotib 루틴 aplpy.FITSFigure 패스 키워드 인수의 다른 방법을 - 당신이 행동 show_polygonsshow_markers을 기대해서는 안 같은 방식으로. 사실 show_poligonskwargsPatchCollection 클래스로, show_markersplt.scatter을 전달합니다. 이것이 속성 오류가 계속 발생하는 이유입니다.

그래서 1d 색상 목록으로 패치를 색칠하는 방법은 무엇입니까? 지금까지 내가 아는 한, 거기에는 한 줄의 솔루션은 없다, 그러나 당신은 다각형을 통해 루프를 할 수 있고 개별적으로 색상 : 대한

those elusive polygons

+0

감사 : 나를 위해 다음 그림을 생산

for p, c in zip(polygons, zvalues): fig.show_polygons([p], facecolor=cmap1(norm1(c)), edgecolor='none', alpha=0.3) plt.show() 

을 회신, 그 부분적으로 작동하는 것 같습니다. 모든 좌표가 픽셀의 데카르트 시스템에있는 것처럼 보입니다 (numpy.zeros()로 인해)? 다각형 모서리 좌표가 구 좌표 (RA, Dec) 좌표가 아닌 직교 좌표 (x, y) 인 곳이 필요했습니다. –

+0

하늘 좌표에 플롯하기 위해서는 유효한 HDU 또는 피트 파일에 대한 경로를'aplpy.FITSFigure'에 전달해야합니다. 이것은 원래 게시물이 보여주는 것과 다르며 픽셀 배열 만 제공하기 때문입니다. –

+0

필자가 찾은 또 다른 예제 때문에 모든 결과를 알지 못하기 때문에'zeros()'를 사용하고있었습니다. 나는 맞는 파일이 없다. 나는'FITSFigure'가'zeros()'대신에'astropy.wcs.WCS()'객체를 받아 들일 수 있다고 생각하지만, J2000 RA/Dec에 대해 하나의 설정을 얻는 방법을 알 수는 없습니다. 어쩌면 새로운 stackoverflow 질문에 대한 주제입니다. –