Python 在PySal中创建单变量Moran散点图

Python 在PySal中创建单变量Moran散点图,python,geospatial,pysal,Python,Geospatial,Pysal,我试图用PySAL创建一个Moran的散点图——一个有HH/HL/LH/LL象限的散点图——我想我已经做到了,但我想检查一下我的理解/解释/代码。下面的代码使用内置的北卡罗来纳州小岛屿发展中国家数据集和行标准化 import numpy as np import pysal as ps import matplotlib.pyplot as plt import matplotlib.cm as cos # shpdir is wherever the PySAL example data a

我试图用PySAL创建一个Moran的散点图——一个有HH/HL/LH/LL象限的散点图——我想我已经做到了,但我想检查一下我的理解/解释/代码。下面的代码使用内置的北卡罗来纳州小岛屿发展中国家数据集和行标准化

import numpy as np
import pysal as ps
import matplotlib.pyplot as plt
import matplotlib.cm as cos

# shpdir is wherever the PySAL example data are installed
col = 'SIDR74' 
w = ps.open(os.path.join(shpdir,"sids2.gal")).read()
f = ps.open(os.path.join(shpdir,"sids2.dbf"))
y = np.array(f.by_col(col))

w.transform = 'r'

### Are these next three steps right? ###

# Calculate the spatial lag
yl  = ps.lag_spatial(w, y)

# Z-Score standardisation
yt   = (y - y.mean())/y.std()
ylt  = (yl - yl.mean())/yl.std()

# Elements of a Moran's I Scatterplot
# X-axis = z-standardised attribute values
# Y-axis = z-standardised lagged attribute values
# Quadrants = HH=1, LH=2, LL=3, HL=4
#
# So from that it follows that:
# HH == ylt > 0 and yt > 0 = 1
# LH == ylt > 0 and yt < 0 = 2
# LL == ylt < 0 and yt < 0 = 3
# HL == ylt < 0 and yt > 0 = 4

# Initialise an array with a default
# value to hold the quadrant information
quad = np.zeros(yt.shape)
quad[np.bitwise_and(ylt > 0, yt > 0)]=1 # HH
quad[np.bitwise_and(ylt > 0, yt < 0)]=2 # LH
quad[np.bitwise_and(ylt < 0, yt < 0)]=3 # LL
quad[np.bitwise_and(ylt < 0, yt > 0)]=4 # HL

plt.scatter(yt, ylt, c=quad, cmap=cms.summer)
plt.suptitle("Moran Scatterplot?")
plt.show()
将numpy导入为np
将pysal作为ps导入
将matplotlib.pyplot作为plt导入
将matplotlib.cm导入为cos
#shpdir是安装PySAL示例数据的地方
col='SIDR74'
w=ps.open(os.path.join(shpdir,“sids2.gal”)).read()
f=ps.open(os.path.join(shpdir,“sids2.dbf”))
y=np.数组(f.by_col(col))
w、 转换='r'
###接下来的三个步骤正确吗###
#计算空间滞后
yl=ps.lag_空间(w,y)
#Z分数标准化
yt=(y-y.mean())/y.std()
ylt=(yl-yl.mean())/yl.std()
#莫兰I散点图的元素
#X轴=z轴标准化属性值
#Y轴=z轴标准化滞后属性值
#象限=HH=1,LH=2,LL=3,HL=4
#
#由此可知:
#HH==ylt>0和yt>0=1
#LH==ylt>0,yt<0=2
#LL==ylt<0,yt<0=3
#HL==ylt<0和yt>0=4
#使用默认值初始化数组
#值来保存象限信息
四元=np.零(Y.形状)
四元[np.按位_和(ylt>0,yt>0)]=1#HH
四元[np.按位_和(ylt>0,yt<0)]=2#LH
四元[np.按位_和(ylt<0,yt<0)]=3#LL
四元[np.按位_和(ylt<0,yt>0)]=4#HL
plt.散射(yt,ylt,c=quad,cmap=cms.summer)
plt.suptitle(“莫兰散点图?”)
plt.show()

这产生了一些似乎合理的东西,但我认为我自己陷入了困境,因为我还没有实际计算出莫兰I(通过
ps.Moran_Local(…)
)这就是所谓的莫兰散点图…

这确实产生了我的想法——对照GeoDA检查似乎产生了相同的图表。很好的解决方案。两件小事:
import os
缺失,还有一些导入的
cms.summer
。这似乎确实产生了我的想法——检查GeoDA似乎产生了相同的图表。很好的解决方案。两件小事:
import操作系统
丢失,还有一些
cms.summer的导入