Gap statistics measures how different the total within intra-cluster variation can be between observed data and reference data with a random uniform distribution. A large gap statistics means the clustering structure is very far away from the random uniform distribution of points.
The number of clusters can be chosen as the smallest value of k such that the gap statistic is within one standard deviation of the gap at k+1. In your case, when k = 6, its value is greater than the value that k = 7 minus one standard deviation.
More details can be found http://web.stanford.edu/~hastie/Papers/gap.pdf
Gap Statistics tries to minimize the cluster size. You need to change the Method for selecting optimal number of clusters.
Evaluate each proposed number of clusters in KList and select the smallest number of clusters satisfying
Gap(K)≥Gap(K+1)−SE(K+1),
where K is the number of clusters, Gap(K) is the gap value for the clustering solution with K clusters, and SE(K + 1) is the standard error of the clustering solution with K + 1 clusters.
This can be done in MATLAB using 'SearchMethod','firstMaxSE' in evalclusters()
Ref: Gap criterion clustering evaluation object - MATLAB (mathworks.com)