Canvas not supported; please update your browser.


A = 0.12345678
B = 0.12345678
C = 0.12345678
rms Error = 0.12345678
x = 0.123456,   slope = 0.123456

X label:   X units:

Y label:   Y units:


Save Sheet 1 graph as:


nPlot was designed to let science teachers teach science instead of how to wrestle with different graphing programs. For example, uncertainties can simply be entered in the columns labeled "± x" and "± y". Not all students have the math experience required to linearize their data. With nPlot, they don't have to. The most common mathematical models encountered in introductory physics can be selected with a mouse click.

nPlot now supports up to 3 separate curves. The axes will be scaled so that the data from all three curves fits within the graph. If the data consists of very large or very small numbers, scientific notation is automatically invoked. It is not possible to control the scaling of the graph axes. The auto-scaling routine is quite robust. Of course, some students will find ways, through bad data, bad math, or both, to break it. We call these "teachable moments."

The axis labeling understands Greek. Just type e.g. \Delta, \delta, or \mu to get any letter in the Greek alphabet (that is not already in the Roman one). The labels also understand e.g., ^2 in the usual way. But no subscripts yet because Unicode does not have a consistent subscript alphabet.

Fit results and their uncertainties are purposely reported to a ridiculous number of decimal places, so that students have the opportunity to think about uncertainty and precision. (Although the uncertainties in the data grid are drawn on the graph, they do not affect the fit.) Goodness-of-fit is given by the root mean square error (RMSE). Smaller indicates a better fit, but not necessarily a better model. Students will have to be discouraged from choosing a quadratic fit to everything. If the "Download fit" button is checked, then the numerical results of the fit (or fits) will be downloaded as a separate text file ("fit.txt") when the graph is downloaded (as "Graph.png"). The student should allow multiple downloads if they get a pop-up asking for permission.

The Tangent Finder does just what it says. When activated, it gives the slope of the fit at the x-value of the mouse position. If a student wants to include a tangent in their downloaded graph, they can slide the mouse off the top edge of the graph at the desired x-value.

Students can prepare their data in Excel or Google Sheets, then copy and paste the whole block into the data grid. Then they can download the completed graph and paste it next to the data table in their spreadsheet and hey! look! an electronic notebook.

Within the data grid, Enter, Tab, and the arrow keys do reasonable things. Shift-delete clears the current cell. If a data cell turns red, it has some problem preventing it from being interpreted as a number. If a data point is suspect, you can check the box in the "skip" column and it will be ignored. The Clear Data button clears only the currently selected sheet. Holding down the control-key while clicking Clear Data will erase the data from all three sheets.

The Save Sheet feature saves the graph for the currently selected sheet for later Recall, but only on the physical machine the student is using. This is useful only if they have a personal Chromebook or other device. Other aspects of graph saving: holding down the shift key while clicking on the name of a saved graph will delete just that graph. There is no "are you sure?" warning. A recalled graph will overwrite whatever is in the currently selected sheet. If the title on a recalled graph is "undefined", then the student should give it a proper title and re-save it under the original name.

The advanced models involve advanced fitting methods. Since this is a program for begining students, some necessary but tricky stuff is done for them. As a result, the majority of the data needs to be in the positive quadrant or the fit will fail (and no curve will be drawn).


Bad paste attempt. Check your spreadsheet data for letters and other non-numeric characters.


nPlot v5.01

© Geoff Nunes, 2020, 2021

Questions, brickbats, and requests for new features can be sent to doc at this website (noragulfa.com). Please don't expect a rapid response.

The fitting routines are adapted from Press, Teukolsky, et al., Numerical Recipes. The data grid was adapted from code by Ondřej Žára. Everything else is my fault.

Change Log


Minor new feature: RMSE is now calculated for the Exactly Proportional (non)fit.

Minor aesthetic fix: zero values in data grid no longer in scientific notation.

Realy minor aesthetic fix: Save, Recall, and Download buttons don't move when you change sheets.


New fits: y = Ax1/2 (under Advanced Models) and a "No Relation" fit


New feature: Scientific notation automatically used for large and small numbers. Partial bug fix: no longer hangs when non-numeric data points are entered. But the count point count will be off so some data points will not plot.


Minor aesthetic improvement when a quadratic curve dips out of the plotting box


Bug Fix: Program would hang if max and min on either axis were both zero


Bug Fix: Bad CSS forced unnecessary scroll bars on 1366 x 768 (WXGA) displays


Clear Data now also clears checked skip checkboxes


Bug fix: entering data only in the x column caused nPlot to hang


Bug fix: autoscaling failed for some data sets


Front panel changed to make it clear that Saving a graph saves only the current sheet, not all three

Minor aesthetic improvements


Bug fix: version 5.00 broke superscripts in labels


New feature: support up to three separate curves, each with independent fit


Internal variable handling finally cleaned up


New feature: add Advanced Models (power law and exponential)


New feature: add "skip" checkboxes to suppress data points


New feature: graph title option

New feature: option to download fit parameters as a text file


Bug Fix: previous version broke graph saving


Labels at lower left corner are "flush" to prevent overlap

Minor aesthetic improvements to HTML


Redesigned and renamed as nPlot

Obsolete fitting models removed

New feature: TeX style Greek letter and superscripts in axis labels

Improved detection of "junk" inputs in data sheet

New feature: report uncertainties in parameters and RMSE of fit