0

我无法使用 Matplotlib 在循环中绘制多个系列(Matplotlib 1.0.0、Python 2.6.5、ArcGIS 10.0)。论坛研究向我指出了 Axes 对象的应用,以便在同一个图上绘制多个系列。我看到这对于在循环之外生成的数据(示例脚本)非常有效,但是当我插入相同的语法并将第二个系列添加到从数据库中提取数据的循环中时,我收到以下错误:

“:不支持的操作数类型 -:'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")
4

1 回答 1

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
于 2013-07-01T21:47:35.373 回答