One possible way to operationalize the requirement _"When the point in the denser area, it has greater weight"_ is to weight each point by the number of neighbors within a specified distance: nf = Nearest[pts]; radius = 50; weightedData = WeightedData[pts, Length[nf[#, {All, radius}]] & /@ pts]; center = Mean[weightedData]; ListPlot[pts, Epilog -> {Red, PointSize[.02], Point[Mean[pts]], Green, Point @ center}] [![enter image description here][1]][1] With `radius = 100` we get [![enter image description here][2]][2] [1]: https://i.sstatic.net/5iAfp.png [2]: https://i.sstatic.net/PXpHC.png