kristapsdz / kplot

Cairo plotting library

Home Page:https://kristaps.bsd.lv/kplot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Synopsis

kplot is an open source Cairo plotting library. This is the README file for display with GitHub, which hosts a read-only source repository of the project. To keep up to date with the current stable release of kplot, visit the kplot website.

Code Example

Interfacing with kplot is fairly easy. One creates a data source and a plot, fills the data source with points, connects the source to the plot, the plots. The data source can have its values changed, the plot can be re-plotted, etc.

log-scale

The above graph is created by the following. Note that there is little error-checking!

#include <cairo.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <kplot.h>
 
int
main(void)
{
	struct kpair	 points1[50], points2[50];
	struct kdata	*d1, *d2;
	struct kplot	*p;
	cairo_surface_t	*surf;
	size_t		 i;
	cairo_t		*cr;
 
	for (i = 0; i < 50; i++) {
		points1[i].x = points2[i].x = (i + 1) / 50.0;
		points1[i].y = log((i + 1) / 50.0);
		points2[i].y = -log((i + 1) / 50.0) + points1[0].y;
	}
	d1 = kdata_array_alloc(points1, 50);
	d2 = kdata_array_alloc(points2, 50);
	p = kplot_alloc(NULL);
	kplot_attach_data(p, d1, KPLOT_POINTS, NULL);
	kplot_attach_data(p, d2, KPLOT_LINES, NULL);
	kdata_destroy(d1);
	kdata_destroy(d2);
	surf = cairo_image_surface_create
		(CAIRO_FORMAT_ARGB32, 600, 400);
	cr = cairo_create(surf);
	cairo_surface_destroy(surf);
	kplot_draw(p, 600.0, 400.0, cr);
	cairo_surface_write_to_png
		(cairo_get_target(cr), "example0.png");
	cairo_destroy(cr);
	kplot_free(p);
	return(EXIT_SUCCESS);
}

Installation

kplot works out-of-the-box with modern UNIX systems with Cairo installations. Simply download the latest version's source archive (or download the project from GitHub), compile with make, then sudo make install or doas make install, whichever.

API Reference

See the kplot(3) manpage for complete library documentation.

License

All sources use the ISC (like OpenBSD) license. See the LICENSE.md file for details.

About

Cairo plotting library

https://kristaps.bsd.lv/kplot

License:ISC License


Languages

Language:C 89.4%Language:CSS 5.5%Language:Makefile 5.0%Language:Shell 0.1%