0

データベース内のレコードごとに 1 つのパラメーターの要約プロットを作成する必要があります。以下のコードを使用して、各レコードのサブプロットを作成できました (テスト データベースでは 5、ArcGIS 10.0 ファイル ジオデータベース、Python 2.6.5、Matplotlib 1.0.0) が、各サブプロットは同一です。適切な構文を特定するために、要約プロット/レポート、サブプロット構文、およびループ手法のフォーラムの例を検索しました。プロットごとに目的の 1 つのレコードではなく、プロットごとにすべてのレコードをプロットしているため、私の問題は不適切なループ構文であると予想されます。この基本的なプロットの問題を解決したら、コードの範囲を拡大して、プロットごとに 10 ~ 15 個のパラメーター、合計 3 ~ 4 個のプロット、およびいくつかの一般的な要約情報をすべてレコードごとに 1 ページの pdf に含める予定です。私は合計で数千のレコードを扱っています。

これは、スタック オーバーフローに関する私の最初の投稿です。フォーラムは、過去 1 年間、何度も私にとって非常に役立つリソースでした。私は Python を初めて使用し、matplotlib を使用するのは初めてですが、言語とこのライブラリの大きな可能性を感じています。どんな助けや提案も大歓迎です!

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)
for row in cur:
    x=1
    y=row.getValue(P1_fld)
    if row.OBJECTID != last_val:
        for i,v in enumerate(xrange(nsubp)):
            v = v+1
            i = i+1
            ax = plt.subplot(nsubp,1,v) # Create a subplot.
            ax.scatter(x,y,s=5,color='blue'); # Generate the Scatter Plot.
            oid = str(row.getValue('OBJECTID'))
            figPDf = r"filepath.pdf" # Save the Scatter Plot to PDF.
            plt.savefig(figPDf)
del row, cur
os.startfile("filepath.pdf")
4

1 に答える 1