Если сглаживание не нужно, то можно сделать триангуляцию и построить «как есть».
А еще можно B-сплайнами интерполировать данные, чтобы перейти от неравномерной сетке к равномерной, а потом уже построить простейшую триангуляцию (по тройкам соседних пикселей, делается это элементарно). Но вот только построение B-сплайнов на неравномерной сетке — отнюдь не тривиальная задача.
Рекомендую все-таки элементарщину: триангуляцию + построение. В любом случае, без триангуляции не обойтись (т.к. все равно придется сначала упорядочить данные).
Если задача не учебная, можно, например, mathGL использовать, чтобы не городить велосипеды. А если она вообще одноразовая, то и gnuplot подойдет.