matplotlib在循环中使用轴对象的散点图

时间:2013-07-01 21:41:12

标签: matplotlib axes arcpy

我无法使用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")

1 个答案:

答案 0 :(得分: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