Soft (fuzzy) clustering techniques are often used in the study of high-dimensional data sets, such as microarray and other high-throughput bioinformatics data. The most widely used method is the Fuzzy C-means algorithm (FCM), but it can present difficulties when dealing with some data sets. A fuzzy clustering algorithm, DifFUZZY, which utilises concepts from diffusion processes in graphs and is applicable to a larger class of clustering problems than other fuzzy clustering algorithms is developed. Examples of data sets (synthetic and real) for which this method outperforms other frequently used algorithms are presented, including two benchmark biological data sets, a genetic expression data set and a data set that contains taxonomic measurements. This method is better than traditional fuzzy clustering algorithms at handling data sets that are "curved", elongated or those which contain clusters of different dispersion. The algorithm has been implemented in Matlab and C++ and is available at http://www.maths.ox.ac.uk/cmb/difFUZZY.