esda 包中的join_counts函数输出Join Counts对象是含有四个属性,其属性分表代表:
jc.bb:表示在每个空间邻域对中具有相同属性值的观测单元对的数量。它是一个二维数组,其中行和列分别表示两个不同的属性类别。例如,jc.bb[i, j]表示具有属性类别i和j的观测单元对的数量。
jc.j:表示每个观测单元与其邻域观测单元具有相同属性值的连接数量。它是一个一维数组,其中每个元素表示相应观测单元的连接计数(Join Counts)。
jc.ww:表示每个观测单元与其邻域观测单元具有相同属性值的预期连接数量(Expected Join Counts)。它是一个一维数组,其中每个元素表示相应观测单元的预期连接计数。
jc.bw:表示在每个空间邻域对中具有不同属性值的观测单元对的数量。它是一个二维数组,其中行和列分别表示两个不同的属性类别。例如,jc.bw[i, j]表示具有属性类别i和j的观测单元对的数量。
import pysal.lib.weights as weights
from esda.join_counts import Join_Counts
import matplotlib.pyplot as plt
# 坐标点数据
points = np.array([(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)] ) # 替换为您的坐标点数据
# 构建空间权重矩阵
w = weights.KNN.from_array(points , k=3)
# 计算Join Counts指数
jc = Join_Counts(points, w)
# 提取Join Counts结果
join_counts = jc.j
expected_join_counts = jc.ww
# 创建柱状图
fig, ax = plt.subplots()
x = range(len(join_counts))
width = 0.35
ax.bar(x, join_counts, width, label='Join Counts')
ax.bar(x, expected_join_counts, width, label='Expected Join Counts')
# 添加标签和标题
ax.set_xlabel('Points')
ax.set_ylabel('Counts')
ax.set_title('Join Counts')
ax.set_xticks(x)
ax.legend()
# 显示图表
plt.show()