首页 > 解决方案 > 几何中值的等高线图

问题描述

我目前有以下代码来生成一些点的几何中值图:

import numpy as np
from scipy.optimize import minimize
from scipy.spatial.distance import cdist
import matplotlib.pyplot as plt

def geometric_median(points):
    """
    Geometric median as a convex optimization problem.
    """

    def aggregate_distance(x):
        return cdist([x], points).sum()

    centroid = points.mean(axis=0)

    optimize_result = minimize(aggregate_distance, centroid, method='COBYLA')

    return optimize_result.x

def plot_median(points):
    points = np.array(list(points))
    x, y = zip(*points)
    median = geometric_median(points)
    
    for i in range(len(points)):
        plt.plot([median[0],x[i]],[median[1],y[i]], 'o', mfc='red', mec='red', ls=':', c='k')
    plt.plot(median[0], median[1], 'ob', markersize=10)
    plt.show()

我想要做的是将我的图分层在等高线图上,其中 z 值是从 (x,y) 到所有其他点的距离之和,因此几何中位数将在中间,最小值 - 比如显示在底部图片中,我目前只能创建顶部图片。我没有问题找到每个点的距离总和,我只是不知道如何将它绘制成等高线图。任何帮助或指示将不胜感激。 在此处输入图像描述

标签: python

解决方案


推荐阅读