Python 绘制一维阵列的距离矩阵

Python 绘制一维阵列的距离矩阵,python,numpy,matplotlib,Python,Numpy,Matplotlib,我想为6个城镇之间的距离绘制一个距离矩阵图。A1至A3和B1至B3 我已经计算了距离,比如A1-B1,A1-B2……同样地……A3-B3,我得到了一个一维数组 我得到了一个1D numpy阵列,用于测量6个城镇之间的距离 np.array(R) [ 3.00 2.50 1.00 3.3192 2.383 2.7128 3.8662 3.6724 3.5112] 现在我想要一个距离矩阵格式的图,它应该像下图所示 这只是一个有代表性的数据。我有很多值,所以需要python程序。

我想为6个城镇之间的距离绘制一个距离矩阵图。A1至A3和B1至B3

我已经计算了距离,比如A1-B1,A1-B2……同样地……A3-B3,我得到了一个一维数组 我得到了一个1D numpy阵列,用于测量6个城镇之间的距离

np.array(R)
[ 3.00  2.50  1.00  3.3192  2.383   2.7128  3.8662  3.6724  3.5112]
现在我想要一个距离矩阵格式的图,它应该像下图所示

这只是一个有代表性的数据。我有很多值,所以需要python程序。 任何建议或python matplotlib脚本示例都会有所帮助。 问候

import numpy as np
from matplotlib.pylab import *
R = np.array ([3.00, 2.50, 1.00, 3.3192, 2.383,  2.7128, 3.8662, 3.6724,   3.5112])
C = np.split(R, 3)
print(C)
matshow(C,cmap=cm.gray)
plt.show()

看来你自己已经掌握了大部分的方法。通过将轴标签更改为
A1、A2、…
,并打印其中每个单元格的值,可以清理绘图,使其更接近预期效果

脚本的清理版本如下所示:

import numpy as np
import matplotlib.pyplot as plt
R = np.array ([3.00, 2.50, 1.00, 3.3192, 2.383,  2.7128, 3.8662, 3.6724,   3.5112])

# Calculate the shape of the 2d array
n = int( np.sqrt( R.size ) )
C = R.reshape((n,n))

# Plot the matrix
plt.matshow(C,cmap="Reds")

ax = plt.gca()

# Set the plot labels
xlabels = ["B%d" % i for i in xrange(n+1)]
ylabels = ["A%d" % i for i in xrange(n+1)]
ax.set_xticklabels(xlabels)
ax.set_yticklabels(ylabels)

#Add text to the plot showing the values at that point
for i in xrange(n):
    for j in xrange(n):
        plt.text(j,i, C[i,j], horizontalalignment='center', verticalalignment='center')

plt.show()
并将创建以下绘图:


Stackoverflow不是一种代码编写服务-到目前为止您尝试了什么?@SimonGibbons我知道。我得到了不同数组中不同列的值。尝试…我建议显示您的代码,并解释您当前遇到的问题。这将使我们更容易帮助你。@cel:我做到了。现在工作很好。但由于我是新手,你可以改进代码。@SimonGibbons,看看我的答案,请你编辑。