2013-07-01 1 views
0

Matplotlib을 사용하여 여러 시리즈를 루프 (Matplotlib 1.0.0, Python 2.6.5, ArcGIS 10.0)로 그려 보는 데 문제가 있습니다. 포럼 연구는 Axes 객체를 적용하여 여러 줄을 같은 줄거리로 그려 보았습니다. 루프 (예제 스크립트) 외부에서 생성 된 데이터를 잘 작동하는 방법을 볼 수 있지만 같은 구문을 삽입하고 데이터베이스에서 데이터를 가져 오는 내 루프에 두 번째 계열을 추가하면 다음 오류가 발생합니다.루프에서 축 객체를 사용하는 matplotlib scatter plot

" : - 'NoneType'및 'NoneType'에 대해 지원되지 않는 피연산자 유형이 실행되지 않았습니다 (ChartAge8). "

다음은 내 코드입니다. 제안이나 의견은 매우 높이 평가됩니다!

import arcpy 
import os 
import matplotlib 
import matplotlib.pyplot as plt 

#Variables 
FC = arcpy.GetParameterAsText(0) #feature class 
P1_fld = arcpy.GetParameterAsText(1) #score field to chart 
P2_fld = arcpy.GetParameterAsText(2) #score field to chart 
plt.subplots_adjust(hspace=0.4) 
nsubp = int(arcpy.GetCount_management(FC).getOutput(0)) #pulls n subplots from FC 
last_val = object() 

#Sub-plot loop 
cur = arcpy.SearchCursor(FC, "", "", P1_fld) 
i = 0 
x1 = 1 # category 1 locator along x-axis 
x2 = 2 # category 2 locator along x-axis 
fig = plt.figure() 
for row in cur: 
    y1 = row.getValue(P1_fld) 
    y2 = row.getValue(P2_fld) 
    i += 1 
    ax1 = fig.add_subplot(nsubp, 1, i) 
    ax1.scatter(x1, y1, s=10, c='b', marker="s") 
    ax1.scatter(x2, y2, s=10, c='r', marker="o") 
del row, cur 

#Save plot to pdf, open 
figPDf = r"path.pdf" 
plt.savefig(figPDf) 
os.startfile("path.pdf") 

답변

0

싶은 것은 당신이 루프 밖에서 그림 객체를 생성 할 다음, 같은 개체마다이 같은 음모를해야하는지 같은 플롯 재사용 플롯 여러 가지 물건의 경우 :

fig = plt.figure() 

for row in cur: 
    y1 = row.getValue(P1_fld) 
    y2 = row.getValue(P2_fld) 
    i += 1 

    ax1 = fig.add_subplot(nsubp, 1, i) 
    ax1.scatter(x1, y1, s=10, c='b', marker="s") 
    ax1.scatter(x2, y2, s=10, c='r', marker="o") 
del row, cur 
+0

의견에 감사드립니다. 나는 당신의 제안으로 스크립트를 수정했지만, 이전과 같은 오류가 여전히 발생하고 있습니다. – gamarra

+0

@gamarra 루프의 각 반복마다 새로운 figure 객체를 생성하고 있습니다. –

+0

Paul, 스크립트의 변경 내용을 반영하도록 위 코드를 편집했습니다. 내가 이해 하듯이 Figure 객체는 이제 단 한 번만 생성되지만, subplot 객체는 각 레코드에 대해 다시 발생합니다. 이는 목표입니다. 그러나 하나의 서브 플롯 객체를 추가 할 수 있습니다 (시리즈 2의 경우 - 궁극적으로 12 개의 시리즈를 추가해야 함). 위 코드 에서처럼 두 번째 서브 플롯 객체를 추가하자 마자 NoneType 오류가 발생합니다. 이 문제를 해결하는 방법에 대한 의견이 있으십니까? – gamarra

관련 문제