Skip to content

Scatter Plot Maker

Turn x,y rows into a linear XY scatter plot and download the exact preview as a standalone SVG.

Privacy: your files never leave your device. All processing happens locally in your browser.

How to use

  1. 1.Enter a title and paste one strict x,y numeric pair per non-empty line.
  2. 2.Generate the plot, then verify the axis ranges and separate valid, invalid, and over-limit row counts.
  3. 3.Inspect representative points in the preview and download the identical standalone SVG.

About Scatter Plot Maker

XY Scatter Plot Maker converts pairs of numeric measurements into a simple two-axis scatter plot in the current browser. Enter one point per non-empty line as x,y, add an optional title, and generate the chart. Each valid pair becomes one blue circle. The horizontal position comes from its x value and the vertical position comes from its y value, so unequal numeric gaps remain unequal on the chart. This makes the tool suitable for small experiments, paired observations, calibration samples, classroom demonstrations, rough correlation checks, and quick visual inspection.

Input parsing is intentionally strict. Every non-empty row must contain exactly two comma-separated numbers. Signed values, decimals, zero, and scientific notation are accepted. Empty components, extra commas, unit text, hexadecimal, Infinity, NaN, and magnitudes above 1e12 are invalid. Blank rows are ignored. Negative zero is normalized to zero. Invalid rows do not become zero points or move to an axis; they are skipped and counted explicitly in the generated summary.

The first 200 non-empty rows are checked. After that boundary, every additional non-empty row is counted separately as an over-limit skip. Rows above the limit are not mixed into the invalid count because they were deliberately not parsed. The summary always displays valid points, invalid rows, and over-limit rows as separate numbers, including zero. If no valid point remains, generation reports an error and clears any older chart. Nothing is silently truncated or represented as if all pasted rows were used.

Both axes use independent linear scales. The smallest x value maps to the left plot boundary and the largest x value maps to the right. The smallest y value maps to the bottom and the largest y value maps to the top. Values between those limits are placed in direct proportion to their numeric distance. Five reference lines and labels expose each displayed range. The axes do not automatically include zero, so inspect the labels before interpreting the apparent position or spread of a cluster.

A constant axis needs special handling because its minimum and maximum would otherwise be equal and division by zero would make coordinates invalid. When all x values are identical, the tool expands the x domain symmetrically around that value and centers every point horizontally. The same rule applies independently to a constant y value. The expansion is ten percent of the absolute constant or one unit, whichever is larger. A single valid point therefore appears in the center of both axes instead of failing.

The generated file is a standalone 800 by 500 SVG with a white background, title, grid, numeric axis labels, and point markers. Each circle contains a text title with its exact formatted x and y values for SVG-aware viewers. SVG is vector output, so lines, text, and circles remain sharp when resized. The on-page preview and download are not reconstructed separately: both use the same percent-encoded SVG data URI derived from one generated string. Editing the title or data clears that string and disables the old download.

User text is treated conservatively. The title is XML-escaped before it enters text content or the accessible SVG label. Ampersands, angle brackets, quotes, and apostrophes become XML entities. Code points forbidden by XML are replaced with the replacement character. Numeric values are parsed as finite JavaScript numbers and formatted by the tool rather than inserted from raw input. A title containing closing tags or script-like text therefore remains visible text and cannot create SVG elements in the generated markup.

Calculations use JavaScript double-precision floating point. Coordinates are rounded to three decimal places in the SVG, and axis labels use practical significant digits or scientific notation for very large and small values. This is a visualization, not a precision-preserving data format. Keep the original rows for analysis, uncertainty, reproducibility, and exact values. The chart does not calculate correlation, regression, a trend line, confidence intervals, error bars, density, clusters, or statistical significance.

All parsing, layout, XML creation, preview, and download preparation happen locally. No points or title are uploaded to Lizely. Before using the result, verify both axis ranges, the three row counts, and several point titles. Overlapping points can hide one another, especially when identical pairs repeat. For dense data, categorical color, accessible labeling, logarithmic scales, publication styling, or formal statistical analysis, use a dedicated plotting package and retain the source dataset.

Methodology & sources

The parser checks at most 200 non-empty lines for exactly two strict finite decimal or scientific values within absolute magnitude 1e12, while reporting invalid and over-limit rows separately. Independent linear domains map x to left plus its normalized fraction of plot width and y to bottom minus its normalized fraction of plot height. Constant domains expand symmetrically. Production and tests share parsing, layout, XML escaping, and SVG generation; preview and download reuse the same percent-encoded SVG string.

Frequently asked questions

Are x positions equally spaced?
No. Each x coordinate uses a linear numeric scale, so larger numeric gaps occupy more horizontal space.
What happens when every x or y value is the same?
That axis receives a symmetric nonzero domain around the constant, centering the points instead of dividing by zero.
What happens above 200 rows?
Only the first 200 non-empty rows are checked. Every later non-empty row is counted and disclosed as over-limit, separately from invalid rows.
Does the chart calculate correlation or regression?
No. It only plots supplied pairs on linear axes and makes no statistical claim.
Is plot data uploaded?
No. Parsing, coordinate calculation, SVG creation, preview, and download stay in the current browser tab.

Generators guides

View all