import numpy as np
import matplotlib.pyplot as plt
from pymoo.indicators.hv import HV
# Load the data set
approximation_front = np.loadtxt('data_set.csv',delimiter=',')
ref_point = np.max(approximation_front,0) + 1 #it's arbitrary reference point
# estimate the hypervolume

ind = HV(ref_point)
print("HV", ind(approximation_front))
HV 3.8279652805571587
# Sensitivity w.r.t reference point

ref_points = np.array([np.max(approximation_front,0) + 1, np.max(approximation_front,0) + 10, 
                       np.max(approximation_front,0) + 100, np.max(approximation_front,0) + 1000])

HV_values = []
for r in ref_points:
    ind = HV(r)
    HV_values.append(ind(approximation_front))
print(HV_values)

plt.plot(HV_values, marker='o')
plt.ylabel('Hypervolume')
plt.show()
[3.8279652805571587, 123.37119826469413, 10228.803528106066, 1002283.1268265197]