History of GraphiC
The IBM PC was released in 1981. At the time, George Kelley and I (James Rome) were plasma physicists studying nuclear fusion. We realized that generating graphical plots would give us critical insight into plasma equilibria and physical behavior, but the original IBM PC had very low-resolution graphics (CGA 320×200). To overcome this, we each purchased a Corona PC, which offered an amazing 640×480 pixel display.
However, we soon discovered that there was no software available to produce publication-grade scientific plots on microcomputers. We had been using the DISSPLA™ Fortran package on mainframes and were heavily influenced by its methodology. In both DISSPLA and GraphiC, plotting is a structured, procedural state machine:
-
Initialize Session: bgnplot(device, mode, file)
-
Page Dimensions & Units: page(width, height)
-
Start Page Canvas: startplot(bgcolor)
-
Set Plot Area & Origin: area2d(xlen, ylen) and physor(x, y)
-
Calibrate Axes & Labels: box(), heading(title), xname(x), yname(y), graf(...)
-
Execute Plot Routines: Calling the authentic GraphiC routines across all languages (conmat, curve, surmat, smdraw, polgrid, xlog, etc.) without obscuring them behind generic OOP abstractions.
-
Close Frame & Subsystem: Always conclude with endplot() followed by stopplot().
We insisted on vector graphics—where everything is a discrete point, stroke, or filled polygon—so that we could zoom in to inspect fine details on our computer screens and reproduce plots cleanly across pen plotters and laser printers.
We decided that the C language was best suited to run efficiently on a personal computer, but we had to learn it from scratch! We also studied 8086 assembly language and hand-coded critical inner loops in assembly to maximize rendering speed, since numerical math co-processors (like the 8087) were not yet available. It took us several years to perfect our lean, mean, fast C graphics engine. We subsequently founded Scientific Endeavors Corporation to market GraphiC worldwide to scientists and other technical workers.
After George passed away, his son Steve Kelley took his place in the company. Steve cleaned up numerous bugs, expanded features, and managed dedicated customer support. When Steve suffered an untimely death, we terminated Scientific Endeavors. And there the codebase sat, untouched, for over 30 years…
The 2026 Renaissance: Enter AI and Google Antigravity
In 2026, working in close collaboration with me, Google’s Antigravity autonomous AI coding agent resurrected the original GraphiC C archives.
Over the course of this modernization: Archaic 16-bit DOS segmented pointers, expanded memory (EMS) page banking, and disk overlays were eliminated in favor of a clean, flat 64-bit POSIX/C99 architecture running natively across macOS (Apple Silicon ARM64 & Intel), Linux, and Windows. Obsolete pen plotter support and the Tektronix storage file format were replaced by a modern W3C Scalable Vector Graphics (SVG) driver with an interactive browser-based viewer and live monitor streaming. And, Complete multi-language parity was established—delivering first-class bindings for Modern Fortran (2003/2018/legacy F77), Python 3, and Java 22 (Foreign Function & Memory API).
Most importantly, the core mathematical soul of GraphiC remains unaltered: the exact procedural state machine, analytical 3D hidden-surface horizon algorithms, Hershey stroke vector fonts (and now Postscript and TrueType), and precision coordinate transforms developed four decades ago are now preserved and running at native 64-bit speed for the next generation of scientific research.
Advantages of GraphiC
- GraphiC is made for users who want to display data in new ways that are not part of standard "give me the data and I will plot it for you" programs.
- GraphiC can plot multiple views of data as it is being generated. Thus, long experiments can be monitored and stopped if things go awry.
- Vector graphics allow zooming and panning in the included viewer. This allows an overview and study of details in one plot.
- GraphiC is fully self-contained and needs no other libraries or programs except for your compiler..
- The GraphiC C code was designed before numeric co-processors, and is extremely fast and compact.
- It was bug tested for many years and eventually, no changes were needed. (Bad for upgrade sales.)
- GraphiC has support for things such as Smith Charts and error function plots that are not included in most competitive packages.
- The Manual has numerous examples (ported to other languages on disk) that can be used as boiler plate for new plots. Several real-world examples that used GraphiC are also included.
Get GraphiC 2026 Today
Complete C, Fortran 2003, Python 3, and Java 22 source code • 23 Hershey vector fonts & TrueType engine • 35+ production-ready examples • 190-page manual
Instant digital download via Lemon Squeezy • Secure checkout with Credit Card, Apple Pay, or PayPal
GraphiC vs. The Landscape: Modern Scientific Graphics Compared
How the modernized 2026 edition of GraphiC compares against Matplotlib, Gnuplot, MATLAB, OriginPro, Tecplot, DISLIN, and Plotly across binary footprint, execution latency, polyglot language parity, and specialized scientific visualization.
1. Executive Overview: The Right Tool for the Job
In computational science, engineering simulations, and mission-critical automated pipelines, visualization tools fall into two divergent paradigms:
- Heavyweight, Interactive Desktop Environments (MATLAB, OriginPro, Tecplot): Feature-rich with extensive graphical user interfaces and thousands of analysis tools, but carry multi-gigabyte footprints, restrictive per-seat commercial licenses, and prohibitive cold-start latencies that make them unsuitable for autonomous microservices, HPC compute nodes, or embedded systems.
- Dynamic Language & Web Frameworks (Matplotlib, Plotly): Ubiquitous in interactive exploratory data science (Jupyter Notebooks, web dashboards), but burdened by massive dependency stacks (CPython, NumPy, FreeType, libpng, V8, Node.js, Chromium), slow process startup (500–1,500 ms), and lack of native binary linkage for compiled simulation codes written in C and Modern Fortran.
GraphiC occupies a unique, high-value tier: an ultra-lean, high-precision, self-contained scientific plotting engine with zero external runtime dependencies. Developed originally for high-performance scientific publication and modernized in 2026, GraphiC delivers sub-millisecond execution, true physical layout precision (inches/centimeters), pure algorithmic 3D hidden-surface removal with zero GPU/OpenGL prerequisites, and identical API semantics across C/C++, Modern Fortran 2003, Python 3, and Java 22 (FFM).
2. Comprehensive Feature Matrix
Scroll horizontally on smaller screens to compare GraphiC against standard scientific libraries and software packages.
| Feature / Dimension | GraphiC (Modern 2026) | Matplotlib | Gnuplot | MATLAB | OriginPro | DISLIN |
| Binary Footprint | ~655 KB static (407 KB dynamic) |
150–350 MB (Python + wheels) |
15–30 MB (standalone bin) |
15–25 GB (MCR runtime: 4GB) |
3–5 GB (Windows suite) |
10–25 MB (compiled libs) |
| External Dependencies | ZERO (Pure standard libc/libm) |
Python, NumPy, FreeType, libpng, pyparsing, dateutil | cairo, pango, libpng, readline, Qt/X11 | Java VM, Intel MKL, OpenGL drivers, Qt | Windows COM, MSVC CRT, DirectX/OpenGL | FreeType, Motif/X11, GL, zlib |
| Cold-Start Execution Latency | < 0.002s (Sub-millisecond) |
0.50 – 1.50s (module import overhead) |
0.05 – 0.15s (process fork/pipe) |
3.0 – 10.0s (desktop engine boot) |
4.0 – 8.0s (GUI suite launch) |
0.01 – 0.03s (compiled binary) |
| Language Integration | True 4-Way Parity: C/C++, Fortran 2003, Python 3, Java 22 FFM |
Python only (C/Fortran bridges brittle) |
Piped scripts only (no direct C/Fortran API) |
MATLAB syntax (MEX/Engine IPC required) |
LabTalk & Origin C (proprietary desktop) |
C, Fortran, Python (legacy Java JNI wrappers) |
| Vector & Web Output | Native SVG + Auto Interactive HTML5 Viewer, PostScript, WMF | SVG, PDF, PNG (HTML requires mpld3/bokeh) |
SVG, PostScript, Canvas (HTML5 JS driver) | FIG, EPS, PDF, SVG (complex 3D often rasterized) |
EPS, PDF, SVG, EMF, TIFF | PostScript, PDF, SVG, WMF, PNG |
| Serverless & Cloud Containers (AWS Lambda, GCP Cloud Run) |
Native & Trivial (<2 MB container layer, instant cold boot) |
Possible but bulky (250+ MB layer, high cold start) |
Requires apt dependencies in container | Impractical / Costly (Production Server license: $10k+) |
Unsupported (Windows desktop only) |
Supported via dynamic shared object |
| Typography & Fonts | Dual-Engine: 23 Built-in Hershey Vector Fonts + TrueType Engine (Zero FreeType dep) |
External FreeType library + system TTF/OTF | Relies on host fontconfig & pango | System fonts + internal TeX engine | Windows GDI TrueType & OpenType | Hershey fonts + external FreeType |
| 3D Hidden-Surface Engine | Pure Software Algorithmic: No GPU, No OpenGL, No X11 required |
Painter's Algorithm (notorious depth sorting artifacts) |
Software hidden3d algorithm | Hardware OpenGL / Software Mesa fallback | OpenGL hardware acceleration | Software hidden-line removal |
| Specialized Built-In Plots (Smith charts, Ternary, Quiver) |
Built-In: RF Smith Charts, Ternary Phase, 3D Columns, Vector Quiver |
Requires 3rd-party add-ons (scikit-rf, python-ternary) |
Complex manual math transform scripts | Requires RF Toolbox or File Exchange scripts | Built-in (Ternary & Smith templates) | Polar/contour built-in; lacks native Smith |
| Simultaneous Active Plots | simuplot(n)Up to 10 live concurrent coordinate systems |
Subplots & Axes objects (OOP state) | multiplot (sequential write) |
subplot / tiled layout |
Multi-layer graph windows | Multiple page zones |
| Cost & Distribution Model | $499.99 / Single User (Perpetual license; OEM redistribution negotiated) |
Open Source (PSF / BSD) | Open Source (Gnuplot License) | $$$$ Proprietary ($2,000+ / seat; cloud expensive) |
$$$ Proprietary ($1,000–$3,000 / seat) |
Freeware / Commercial license |
3. In-Depth Comparative Analyses
GraphiC vs. Matplotlib (Python): The Burden of Runtime Overhead
Matplotlib is the standard for interactive ad-hoc data exploration in Jupyter Notebooks. However, when software architects attempt to use Matplotlib in high-throughput backend services, serverless execution (AWS Lambda), or automated high-performance computing (HPC) loops, its architectural limits quickly emerge:
- Cold-Start Lag & Footprint: Matplotlib requires between 500 ms and 1.5 seconds just to import its modules (due to Python bytecode parsing, CPython ABI loading, NumPy array initialization, and font cache indexing). GraphiC compiles into a single 655 KB static binary that executes from cold start in under 2 milliseconds.
- 3D Depth Sorting Artifacts: Matplotlib’s 3D engine (
mplot3d) relies on a simple Painter’s algorithm that sorts polygons by centroid distance. On overlapping or concave 3D mesh surfaces, it frequently produces visual rendering errors (triangles popping in front of nearer surfaces). GraphiC’s 3D algorithms (d3plot,surmat,surfun) utilize rigorous mathematical hidden-line horizon algorithms that guarantee mathematically correct occlusion without requiring a GPU. - Polyglot Deployment: Matplotlib cannot be natively linked into Fortran 2003 or C/C++ simulations without running an embedded CPython interpreter instance. GraphiC provides native, zero-overhead C and Fortran bindings alongside its idiomatic Python wrapper.
GraphiC vs. Gnuplot: In-Process Binary Linkage vs. Brittle Shell Scripting
Gnuplot has long been a favorite tool for rapid terminal plotting. Yet from a software engineering perspective, Gnuplot is a standalone executable, not an embeddable C/Fortran library:
- No In-Memory Pointer Passing: Integrating Gnuplot into a compiled C or Fortran simulation requires writing data to temporary disk files or piping formatted ASCII text across an OS subshell (e.g.
popen("gnuplot", "w")). This introduces serialization overhead, disk I/O bottlenecks, and shell-injection risks. - True Library Architecture: GraphiC functions (such as
curve(x, y, n, sym)orsurmat(z, nx, ny, ...)) receive your existing memory buffers directly by pointer or array descriptor. There is zero serialization, zero disk writing, and zero IPC overhead. - Deterministic Page Layout: Gnuplot manages layouts through terminal-specific commands. GraphiC operates strictly on physical paper dimensions (
page(8.5, 11),area2d(6.5, 4.5)in inches or cm), ensuring that multi-panel figures conform exactly to publisher specifications (IEEE, Nature, Elsevier).
GraphiC vs. MATLAB & OriginPro: Enterprise Agility vs. Proprietary Monoliths
MATLAB and OriginPro excel at interactive desktop exploratory plotting with hundreds of point-and-click dialogs. However, for automated production pipelines:
- Licensing & Cost Barriers: Running MATLAB on a cluster of 500 cloud workers requires exorbitant MATLAB Production Server licenses or massive Compiler Runtime containers (~4 GB each). With GraphiC's $499.99 single-user perpetual license, you compile directly into your own executables and run batch jobs across your own workstations or cloud nodes without license servers or per-core metering. (Commercial redistribution in products sold or given to third parties requires a separate OEM agreement with Scientific Endeavors Corporation.)
- Headless Architecture: OriginPro is tied to the Microsoft Windows desktop subsystem. GraphiC is 100% portable POSIX C, running headlessly on Alpine Linux, macOS (Apple Silicon & Intel), Windows, or supercomputing architectures with identical SVG vector output.
GraphiC vs. DISLIN & Plotly: Modern Polyglot Parity and Zero Web Bloat
DISLIN provides a classic C/Fortran library, while Plotly provides rich JavaScript web graphics. GraphiC bridges the best of both worlds:
- Next-Generation Java 22 FFM: While DISLIN relies on legacy JNI C wrapper stubs for Java, GraphiC features modern Java 22 Foreign Function & Memory (FFM) bindings (
LinkerandArena), achieving native compiled C speed inside Java applications without any custom native glue code. - Zero-Framework Interactive HTML5: Plotly produces interactive HTML charts, but requires bundling a heavy 3.5 MB JavaScript runtime engine and cannot run inside an MPI Fortran simulation on a supercomputer. GraphiC generates native, lightweight SVG files accompanied by a zero-framework HTML5 viewer that provides smooth pan, scroll-wheel zoom, and vector export using pure browser-native DOM APIs.
4. The Architectural Pillars of GraphiC
Zero Runtime Dependencies
Compiles cleanly on 64-bit platforms with nothing more than standard C library headers and -lm. No external graphical toolkits, no X11/Wayland servers, and no external font engines required.
Dual-Engine Typography
Includes 23 built-in Hershey vector stroke fonts (Simplex, Complex, Triplex, Gothic, Math, Astronomy, Dot-Matrix) plus an integrated TrueType (.ttf) quadratic B-spline tessellator with outline caching.
RF & Chemical Specialization
Native support for RF Smith transmission charts (impedance & admittance circles), ternary mixture phase diagrams (trimat, trifun), 3D column bars (d3bars), and vector quiver fields (vfield).
Polyglot First-Class Parity
The exact same API across C99/C11/C23, Modern Fortran 2003/2008, Python 3 (with Jupyter Notebook inline SVG support), and Java 22 FFM. Write in your team’s preferred language with zero feature divergence.
5. Polyglot Parity in Action
Compare how simple, clean, and consistent GraphiC code remains across all 4 supported environments. Each produces an identical, high-precision vector SVG figure:
#include <graphic.h>
#include <math.h>
int main(void) {
float x[100], y[100];
for (int i = 0; i < 100; i++) {
x[i] = i * 0.1f;
y[i] = sinf(x[i]);
}
bgnplot(1, 'g', "wave.tkf");
startplot(WHITE);
page(8.0f, 6.0f);
area2d(6.5f, 4.5f);
color(BLACK); box();
heading("Harmonic Oscillation");
graf("%g", 0.0f, 2.0f, 10.0f,
"%g", -1.5f, 0.5f, 1.5f);
color(BLUE);
curve(x, y, 100, 0);
endplot(); stopplot();
return 0;
}program wave_demo
use graphic_iso
implicit none
real(c_float) :: x(100), y(100)
integer :: i
do i = 1, 100
x(i) = real(i - 1) * 0.1
y(i) = sin(x(i))
end do
call bgnplot(1, 103, "wave.tkf")
call startplot(WHITE)
call page(8.0, 6.0)
call area2d(6.5, 4.5)
call color(BLACK); call box()
call heading("Harmonic Oscillation")
call graf("%g", 0.0, 2.0, 10.0, &
"%g", -1.5, 0.5, 1.5)
call color(BLUE)
call curve(x, y, 100, 0)
call endplot(); call stopplot()
end program wave_demoimport math
from graphic import Figure, BLUE, SOLID
x = [i * 0.1 for i in range(100)]
y = [math.sin(v) for v in x]
with Figure(8.0, 6.0, tkf_name="wave.tkf") as fig:
fig.setup_axes(0.0, 2.0, 10.0,
-1.5, 0.5, 1.5)
fig.title("Harmonic Oscillation")
fig.xlabel("Time (s)")
fig.ylabel("Amplitude (V)")
fig.plot(x, y, color="blue")
fig.save("wave.svg")
import com.sciend.graphic.*;
public class WaveDemo {
public static void main(String[] args) {
float[] x = new float[100];
float[] y = new float[100];
for (int i = 0; i < 100; i++) {
x[i] = i * 0.1f;
y[i] = (float) Math.sin(x[i]);
}
try (Figure fig = new Figure(8.0f, 6.0f,
Color.WHITE, "wave.tkf")) {
fig.setupAxes(0f, 2f, 10f,
-1.5f, 0.5f, 1.5f);
fig.title("Harmonic Oscillation");
fig.plot(x, y, Color.BLUE, LineStyle.SOLID);
fig.save("wave.svg");
}
}
}When Should You Choose GraphiC?
GraphiC is the ideal solution if your project requires:
Add new comment