Проверьте GraphViz, в частности, точка. dot действительно хочет сделать разметку самого графика, но если память хорошо мне подходит, вы можете заставить ее размещать блоки в фиксированных положениях. Вы можете использовать точку из командной строки или подключиться к ее API.
Или, вы могли бы подумать о написании SVG напрямую, это всего лишь текст - но от того, работает ли это для вас, зависит частично от того, в какой конечной форме вы хотите получить графику. Большинство браузеров теперь добросовестно рендерит SVG.
Помимо этого, вы можете взглянуть на ImageMagick, Dislin, Cairo или любую из множества других графических библиотек.
Итак, GNUPlot - далеко не единственное возможное решение на долгом пути.