Visualization of Continuous Models: Trajectories, Fields, Uncertainty, and Diagnostics

Last Updated June 15, 2026

Visualization of continuous models turns equations, trajectories, fields, surfaces, uncertainty, and diagnostics into interpretable visual evidence. A continuous model may be defined by calculus, differential equations, state variables, rates, gradients, flows, or spatial fields, but visualization helps people see how those structures behave over time, across space, and under changing assumptions.

In systems modeling, visualization is not decoration. It is part of model inspection. A graph can reveal equilibrium, oscillation, growth, decay, collapse, threshold behavior, sensitivity, stiffness, numerical instability, uncertainty, or misleading smoothness. The visual form chosen can clarify the model, but it can also distort interpretation if axes, scales, smoothing, aggregation, color, uncertainty, or context are handled poorly.

This article introduces visualization of continuous models for systems modeling, including trajectories, phase portraits, slope fields, vector fields, surfaces, contour plots, uncertainty bands, sensitivity displays, diagnostic plots, reproducible graphics workflows, and responsible interpretation.

Scholarly computational workspace with two laptops showing continuous model visualizations, contour maps, surface plots, density fields, curve families, notebooks, brass tools, and drafting materials without labels or readable text.
ggplot2 and Matplotlib help modelers visualize continuous systems through curves, surfaces, gradients, densities, and spatial patterns.

Continuous models often produce more than one kind of output. A differential equation may produce a time trajectory. A system of equations may produce a phase portrait. A spatial model may produce a surface or field. A sensitivity analysis may produce uncertainty bands, parameter sweeps, or response surfaces. Each visual form emphasizes a different aspect of the model.

The purpose of visualization is not merely to make a model look accessible. It is to help inspect mathematical behavior, computational reliability, uncertainty, and interpretation. A responsible visualization shows enough structure for the reader to see what the model implies and enough context to understand what the graph does not prove.

Why Visualization Matters

Visualization matters because continuous models often describe patterns that are difficult to understand from formulas or tables alone. A trajectory can show growth or decline. A phase portrait can show attraction, repulsion, cycling, or instability. A contour plot can show gradients and thresholds. An uncertainty band can show how much of a result depends on assumptions.

\[
\frac{d\mathbf{x}}{dt}=\mathbf{f}(t,\mathbf{x},\theta)
\]

Interpretation: A continuous model describes how state variables change through time under parameters \(\theta\).

Visualization helps interpret the behavior of this system, but it does not replace mathematical or computational review.

Visual form What it shows Systems modeling use
Trajectory plot. State over time. Growth, decay, transition, oscillation, or collapse.
Phase portrait. Movement through state space. Equilibria, cycles, basins, and local dynamics.
Slope field. Local direction of change. How an ODE behaves across possible states.
Vector field. Direction and magnitude in space. Flow, force, transport, diffusion, or spatial dynamics.
Contour or surface plot. Continuous response over two inputs. Optimization, thresholds, gradients, and interaction effects.
Uncertainty band. Range of plausible outputs. Scenario comparison and parameter sensitivity.

The right visualization depends on the mathematical object being inspected and the interpretive question being asked.

Back to top ↑

Visualization as Model Inspection

A model visualization should help inspect the model, not merely present its conclusion. Good visual workflows make assumptions, variables, scales, uncertainty, diagnostics, and limitations easier to review.

Visual Inspection Sequence

Define the Object

Identify whether the visual represents a trajectory, field, surface, sensitivity result, or diagnostic output.

Choose the Encoding

Select axes, scales, line types, contours, bands, arrows, facets, or surfaces based on the model question.

Preserve Metadata

Record parameters, initial conditions, solver settings, units, time horizon, and data source.

Review Interpretation

Check whether the graph clarifies behavior or encourages an unsupported conclusion.

A visualization is strongest when it is paired with enough information to reproduce the model and question its assumptions.

Back to top ↑

Trajectories and Time Series

Trajectory plots show how state variables evolve over time. They are among the most common visualizations of continuous models.

\[
x(t)
\]

Interpretation: A trajectory shows the value of a state variable as a function of time.

Trajectory plots are useful for showing growth, decay, convergence, oscillation, overshoot, collapse, delay, or response to forcing. They also make it possible to compare scenarios under different assumptions.

Trajectory feature Possible model behavior Review question
Monotone growth. Increasing stock, population, exposure, or accumulation. Is growth bounded or unbounded?
Monotone decline. Decay, depletion, cooling, recovery, or dissipation. Does the model approach zero, a threshold, or a floor?
Oscillation. Feedback, delay, predator-prey interaction, or forcing. Is the oscillation structural or numerical?
Overshoot. Delayed response or policy resistance. Are assumptions about delay and control documented?
Sharp transition. Threshold, discontinuity, regime shift, or solver artifact. Does the transition come from the model or numerical method?

A trajectory should include clear axes, units, time horizon, and scenario context. Without those, the graph can look persuasive while remaining difficult to audit.

Back to top ↑

Phase Portraits and State Space

Phase portraits show how a system moves through state space rather than how each variable changes separately over time. This is especially useful for systems of differential equations.

\[
\frac{dx}{dt}=f(x,y),\qquad \frac{dy}{dt}=g(x,y)
\]

Interpretation: A two-state system can be visualized as motion through the \((x,y)\) plane.

Phase portraits can reveal equilibria, attraction, repulsion, cycles, spirals, separatrices, and basins of behavior.

Phase-space feature Interpretation Systems meaning
Equilibrium point. Rates of change are zero. Candidate steady state or balance point.
Attractor. Nearby trajectories move toward a region. Stable pattern, recovery state, or persistent regime.
Repeller. Nearby trajectories move away. Instability or fragile balance.
Limit cycle. Trajectory repeats in state space. Sustained oscillation or cyclical dynamics.
Separatrix. Boundary between different outcomes. Threshold between basins or regimes.

Phase portraits help modelers see the geometry of dynamics, but they require careful scaling and interpretation. The plotted state-space window can hide important behavior outside the visible region.

Back to top ↑

Slope Fields and Vector Fields

Slope fields and vector fields visualize local direction. A slope field for a one-dimensional ODE shows the direction of change at many points. A vector field extends this idea into two or more dimensions.

\[
\frac{dy}{dt}=f(t,y)
\]

Slope field: At each point \((t,y)\), the model defines a local slope.

\[
\mathbf{F}(x,y)=\langle P(x,y),Q(x,y)\rangle
\]

Vector field: At each point in space, the model defines a direction and magnitude.

Field visualization What it reveals Review concern
Slope field. Local ODE behavior across possible states. Can become visually crowded or scale-dependent.
Vector field. Direction and magnitude of spatial flow. Arrow scaling can exaggerate or suppress behavior.
Streamline plot. Paths implied by a vector field. May suggest certainty beyond the model.
Gradient field. Direction of steepest increase. Depends on surface definition and coordinate scale.
Flux visualization. Movement through a boundary or region. Requires careful boundary and unit definition.

Fields are especially useful when the model is local: every point has a direction, slope, force, gradient, or flow value.

Back to top ↑

Surfaces, Contours, and Spatial Structure

Many continuous models describe outcomes over two inputs or spatial dimensions. Surface and contour plots can make these relationships visible.

\[
z=f(x,y)
\]

Interpretation: A response surface shows how an output \(z\) varies with two inputs \(x\) and \(y\).

Contours are often more readable than three-dimensional surfaces because they show level sets on a flat plane.

\[
f(x,y)=c
\]

Contour: A level curve connects points where the modeled output has the same value.

Visualization Best use Interpretive risk
Surface plot. Showing overall shape, peaks, valleys, and curvature. Perspective can hide values or distort slopes.
Contour plot. Showing thresholds, gradients, and level sets. Color and spacing can imply false precision.
Heat map. Showing magnitude across a grid. Color scale can exaggerate differences.
Response surface. Showing parameter interaction. May hide uncertainty or model boundaries.
Spatial field map. Showing distributed quantities. Interpolation can imply knowledge between sampled points.

Surface and contour visualizations should preserve units, domains, grid resolution, color scale, and boundary assumptions.

Back to top ↑

Uncertainty, Sensitivity, and Scenarios

Continuous model outputs often depend on uncertain parameters, initial conditions, structural assumptions, and solver settings. Visualization can help show this dependence rather than hiding it behind a single line.

\[
x(t;\theta)
\]

Interpretation: A trajectory may depend on parameter vector \(\theta\).

Scenario lines, uncertainty bands, fan charts, parameter sweeps, and sensitivity surfaces can show how much conclusions depend on assumptions.

Uncertainty visual What it shows Responsible use
Scenario lines. Different plausible assumptions. Label assumptions clearly.
Uncertainty band. Range of outputs. Explain what the band represents.
Fan chart. Increasing spread over time. Avoid implying exact probabilities without support.
Parameter sweep. Response across parameter values. Show parameter ranges and rationale.
Sensitivity plot. Which inputs matter most. Distinguish local from global sensitivity.

A single smooth line can be misleading when uncertainty is large. In many systems contexts, the spread is as important as the central trajectory.

Back to top ↑

Diagnostic Visualization

Diagnostic visualizations help evaluate numerical behavior and model reliability. They are especially important when continuous models are solved numerically.

Diagnostic Visual Types

Error Plot

Compares numerical output to an analytic or refined benchmark.

Step-Size Plot

Shows how adaptive solvers change step size over time.

Residual Plot

Displays mismatch between model output and observed or benchmark values.

Invariant Plot

Checks whether conserved quantities, bounds, or positivity constraints hold.

Diagnostics should be part of the visualization workflow, not an afterthought. A graph of the modeled trajectory should often be accompanied by a graph of error, step behavior, or constraint checks.

Back to top ↑

Visual Design Choices

Visual design choices shape interpretation. Axis limits, scale transformations, smoothing, color, binning, interpolation, and line thickness can all affect how a continuous model is read.

Design choice Possible distortion Governance response
Axis limits. May hide instability, saturation, or extreme values. Document visible range and excluded range.
Log scale. May make exponential growth look linear. State scale transformation clearly.
Smoothing. May hide discontinuities or numerical artifacts. Preserve raw or unsmoothed comparison.
Color scale. May exaggerate or suppress gradients. Use clear legends and consistent scales.
Interpolation. May imply values between known grid points. Document grid resolution and interpolation method.
Scenario selection. May privilege one narrative. Explain why scenarios were chosen.

A responsible visual should make the model easier to inspect, not merely easier to believe.

Back to top ↑

Systems Modeling Interpretation

In systems modeling, visualization often becomes the public face of a model. A curve, surface, or field may be what readers remember, even if the underlying model is complex. That makes visual interpretation a governance issue.

Continuous model visualizations should distinguish mathematical structure, numerical output, scenario framing, empirical uncertainty, and decision relevance. A graph may show what the model implies under stated assumptions. It does not automatically show what the real system will do.

The interpretive standard is not “the visualization is clear.” The stronger standard is: “the visualization is clear, reproducible, appropriately scaled, uncertainty-aware, and honest about what it represents.”

Back to top ↑

Mathematical Deepening

This section adds a more formal layer for mathematically advanced readers. Visualization of continuous models connects topology, geometry, differential equations, vector calculus, numerical analysis, uncertainty quantification, interpolation, dimensionality reduction, response surfaces, solver diagnostics, and visual encoding.

Visualization Building Blocks

State Space

The mathematical space in which system states are represented.

Trajectory

The path a system follows through time or state space.

Field

A continuous assignment of vectors, slopes, gradients, or values across a domain.

Surface

A continuous response over one or more inputs.

Visualization Review

Scale Review

Check axes, units, transformations, and visible domains.

Uncertainty Review

Show ranges, scenarios, confidence, or sensitivity where relevant.

Diagnostic Review

Inspect error, solver behavior, residuals, and constraints.

Interpretation Review

Separate visual evidence from unsupported claims.

Visualization Governance

Metadata Record

Preserve parameters, units, solver settings, and time horizon.

Design Record

Record scale, color, smoothing, interpolation, and scenario choices.

Output Record

Save data tables behind generated figures.

Warning Record

Document visual limitations and interpretive risks.

Back to top ↑

Examples from Systems Modeling

Continuous model visualization appears across many systems modeling contexts.

Population Dynamics

Trajectory plots show growth, carrying capacity, collapse, or recovery over time.

Epidemiological Models

Compartment trajectories and uncertainty bands show outbreak scenarios and intervention effects.

Climate Feedback

Scenario lines, fan charts, and sensitivity plots show forcing, feedback, and uncertainty.

Resource Systems

Stock-flow trajectories show depletion, regeneration, scarcity, and policy response.

Infrastructure Systems

Load curves, stress surfaces, and failure thresholds show system capacity and risk.

Spatial Dynamics

Vector fields, contours, and heat maps show transport, diffusion, gradients, and distributed accumulation.

Across these examples, visualization helps make continuous change inspectable, but only when visual assumptions are documented.

Back to top ↑

Computation and Reproducible Workflows

Computational visualization workflows should preserve both graphics and the data behind them. A reproducible workflow should store input parameters, generated trajectories, scenario labels, solver settings, uncertainty records, figure specifications, output tables, and interpretation notes.

When a figure supports explanation or decision-making, the graph should not be the only artifact. The underlying data, code, metadata, and warning notes should be available for review.

Back to top ↑

Python Workflow: Continuous Model Visualization Audit

The Python workflow below creates a reproducible trajectory table and a visualization audit record for logistic growth scenarios.

from __future__ import annotations

from dataclasses import asdict, dataclass
from pathlib import Path
import csv
import json
import math


@dataclass(frozen=True)
class TrajectoryRecord:
    scenario: str
    time: float
    value: float
    growth_rate: float
    carrying_capacity: float
    warning: str


@dataclass(frozen=True)
class VisualizationAuditRecord:
    figure_id: str
    visual_type: str
    model_object: str
    x_axis: str
    y_axis: str
    scale_note: str
    uncertainty_note: str
    interpretation_warning: str


def logistic_solution(t: float, x0: float, r: float, k: float) -> float:
    return k / (1 + ((k - x0) / x0) * math.exp(-r * t))


def build_trajectories() -> list[TrajectoryRecord]:
    scenarios = [
        ("low_growth", 0.18, 100.0),
        ("baseline", 0.35, 100.0),
        ("high_growth", 0.55, 100.0),
    ]

    records: list[TrajectoryRecord] = []

    for scenario, r, k in scenarios:
        for step in range(0, 81):
            t = step * 0.25
            records.append(
                TrajectoryRecord(
                    scenario=scenario,
                    time=t,
                    value=logistic_solution(t, x0=10.0, r=r, k=k),
                    growth_rate=r,
                    carrying_capacity=k,
                    warning="Trajectory visualization depends on equation, initial condition, parameters, time horizon, axis scale, and scenario selection."
                )
            )

    return records


records = build_trajectories()

audit_records = [
    VisualizationAuditRecord(
        figure_id="logistic_growth_scenario_trajectories",
        visual_type="trajectory_plot",
        model_object="logistic_solution",
        x_axis="time",
        y_axis="state value",
        scale_note="Linear axes; time horizon 0 to 20.",
        uncertainty_note="Scenario lines are parameter contrasts, not probability intervals.",
        interpretation_warning="The figure shows model-implied trajectories under selected assumptions, not empirical forecasts."
    ),
    VisualizationAuditRecord(
        figure_id="logistic_growth_parameter_comparison",
        visual_type="scenario_comparison",
        model_object="growth_rate_parameter_sweep",
        x_axis="time",
        y_axis="state value",
        scale_note="Same y-axis should be used across scenarios.",
        uncertainty_note="Parameter selection should be documented.",
        interpretation_warning="Scenario selection can frame interpretation and should be justified."
    )
]

output_dir = Path("outputs")
(output_dir / "tables").mkdir(parents=True, exist_ok=True)
(output_dir / "json").mkdir(parents=True, exist_ok=True)

with (output_dir / "tables" / "continuous_model_trajectories.csv").open("w", newline="", encoding="utf-8") as handle:
    writer = csv.DictWriter(handle, fieldnames=asdict(records[0]).keys())
    writer.writeheader()
    for record in records:
        writer.writerow(asdict(record))

with (output_dir / "tables" / "visualization_audit_records.csv").open("w", newline="", encoding="utf-8") as handle:
    writer = csv.DictWriter(handle, fieldnames=asdict(audit_records[0]).keys())
    writer.writeheader()
    for record in audit_records:
        writer.writerow(asdict(record))

(output_dir / "json" / "continuous_model_trajectories.json").write_text(
    json.dumps([asdict(record) for record in records], indent=2),
    encoding="utf-8"
)

(output_dir / "json" / "visualization_audit_records.json").write_text(
    json.dumps([asdict(record) for record in audit_records], indent=2),
    encoding="utf-8"
)

print("Wrote continuous model visualization audit outputs.")

This workflow preserves trajectories and visualization metadata so the figure can be reviewed rather than treated as a standalone image.

Back to top ↑

R Workflow: Trajectory and Scenario Plot Records

The R workflow below records scenario trajectories and figure metadata for a continuous model visualization.

logistic_solution <- function(t, x0, r, k) {
  k / (1 + ((k - x0) / x0) * exp(-r * t))
}

times <- seq(0, 20, by = 0.25)

scenarios <- data.frame(
  scenario = c("low_growth", "baseline", "high_growth"),
  growth_rate = c(0.18, 0.35, 0.55),
  carrying_capacity = c(100, 100, 100)
)

records <- do.call(
  rbind,
  lapply(seq_len(nrow(scenarios)), function(i) {
    data.frame(
      scenario = scenarios$scenario[i],
      time = times,
      value = logistic_solution(
        times,
        x0 = 10,
        r = scenarios$growth_rate[i],
        k = scenarios$carrying_capacity[i]
      ),
      growth_rate = scenarios$growth_rate[i],
      carrying_capacity = scenarios$carrying_capacity[i],
      warning = "Trajectory visualization depends on equation, initial condition, parameters, time horizon, axis scale, and scenario selection."
    )
  })
)

figure_audit <- data.frame(
  figure_id = c(
    "logistic_growth_scenario_trajectories",
    "logistic_growth_parameter_comparison"
  ),
  visual_type = c("trajectory_plot", "scenario_comparison"),
  model_object = c("logistic_solution", "growth_rate_parameter_sweep"),
  x_axis = c("time", "time"),
  y_axis = c("state value", "state value"),
  scale_note = c(
    "Linear axes; time horizon 0 to 20.",
    "Same y-axis should be used across scenarios."
  ),
  uncertainty_note = c(
    "Scenario lines are parameter contrasts, not probability intervals.",
    "Parameter selection should be documented."
  ),
  interpretation_warning = c(
    "The figure shows model-implied trajectories under selected assumptions, not empirical forecasts.",
    "Scenario selection can frame interpretation and should be justified."
  )
)

dir.create("outputs/tables", recursive = TRUE, showWarnings = FALSE)

write.csv(
  records,
  "outputs/tables/r_continuous_model_trajectories.csv",
  row.names = FALSE
)

write.csv(
  figure_audit,
  "outputs/tables/r_visualization_audit_records.csv",
  row.names = FALSE
)

print(head(records))
print(figure_audit)

This workflow treats visualization as an auditable modeling artifact with data and metadata preserved together.

Back to top ↑

Haskell Workflow: Typed Visualization Records

Haskell can represent visualization metadata as typed records, making figure assumptions explicit.

module Main where

data VisualizationRecord = VisualizationRecord
  { figureId :: String
  , visualType :: String
  , modelObject :: String
  , xAxis :: String
  , yAxis :: String
  , scaleNote :: String
  , uncertaintyNote :: String
  , interpretationWarning :: String
  } deriving (Show)

records :: [VisualizationRecord]
records =
  [ VisualizationRecord
      "logistic_growth_scenario_trajectories"
      "trajectory_plot"
      "logistic_solution"
      "time"
      "state value"
      "Linear axes; time horizon 0 to 20."
      "Scenario lines are parameter contrasts, not probability intervals."
      "The figure shows model-implied trajectories under selected assumptions, not empirical forecasts."
  , VisualizationRecord
      "phase_portrait_review"
      "phase_portrait"
      "two_state_dynamic_system"
      "state x"
      "state y"
      "State-space window should be documented."
      "Initial condition selection affects visible trajectories."
      "Phase portraits show local and geometric behavior, not automatic empirical validity."
  , VisualizationRecord
      "vector_field_review"
      "vector_field"
      "spatial_flow_field"
      "x coordinate"
      "y coordinate"
      "Arrow scaling should be documented."
      "Magnitude and direction can be visually distorted by normalization."
      "Vector fields require unit and boundary interpretation."
  ]

main :: IO ()
main =
  mapM_ print records

The typed workflow keeps figure purpose, axes, scale choices, uncertainty notes, and interpretation warnings visible.

Back to top ↑

SQL Workflow: Visualization Assumption Registry

SQL can document visualization assumptions when figures support reports, dashboards, model reviews, or decision workflows.

CREATE TABLE continuous_model_visualization_registry (
    visualization_key TEXT PRIMARY KEY,
    visualization_name TEXT NOT NULL,
    visual_operation TEXT NOT NULL,
    systems_modeling_role TEXT NOT NULL,
    review_warning TEXT NOT NULL
);

INSERT INTO continuous_model_visualization_registry VALUES
(
  'trajectory_plot',
  'Trajectory plot',
  'Plot state value against time.',
  'Shows growth, decline, oscillation, convergence, or collapse.',
  'A smooth trajectory may hide uncertainty, solver error, or invalid assumptions.'
);

INSERT INTO continuous_model_visualization_registry VALUES
(
  'phase_portrait',
  'Phase portrait',
  'Plot motion through state space.',
  'Shows equilibria, cycles, attraction, repulsion, and basins.',
  'The visible state-space window can hide important behavior.'
);

INSERT INTO continuous_model_visualization_registry VALUES
(
  'vector_field',
  'Vector field',
  'Plot direction and magnitude across a domain.',
  'Shows flow, gradient, force, or spatial movement.',
  'Arrow scaling and normalization should be documented.'
);

INSERT INTO continuous_model_visualization_registry VALUES
(
  'contour_surface',
  'Contour or surface plot',
  'Visualize response over two inputs or spatial dimensions.',
  'Shows gradients, thresholds, and interaction effects.',
  'Color scale, interpolation, and grid resolution can distort interpretation.'
);

INSERT INTO continuous_model_visualization_registry VALUES
(
  'uncertainty_band',
  'Uncertainty band',
  'Plot ranges around modeled trajectories.',
  'Shows sensitivity, scenario spread, or uncertainty.',
  'The meaning of the band must be explained.'
);

INSERT INTO continuous_model_visualization_registry VALUES
(
  'diagnostic_plot',
  'Diagnostic plot',
  'Visualize error, residuals, solver steps, or constraints.',
  'Helps distinguish model behavior from numerical artifact.',
  'Diagnostics should accompany important model outputs.'
);

SELECT
    visualization_name,
    visual_operation,
    systems_modeling_role,
    review_warning
FROM continuous_model_visualization_registry
ORDER BY visualization_key;

This registry ties visual interpretation to trajectory plots, phase portraits, vector fields, contours, uncertainty bands, diagnostics, and review warnings.

Back to top ↑

GitHub Repository

The companion repository for this article is designed as a reproducible mathematical-modeling workspace. It supports trajectory tables, visualization audit records, phase portrait metadata, vector field records, contour and surface plot metadata, uncertainty-band notes, SQL governance tables, generated outputs, advanced mathematical audit reports, and reusable calculator scripts.

Back to top ↑

Interpretive Limits and Responsible Use

Continuous model visualizations can make complex behavior easier to understand, but they can also make assumptions feel more certain than they are. A clean graph may hide parameter uncertainty, structural uncertainty, solver error, scale choices, smoothing, interpolation, scenario selection, or omitted boundary behavior.

Responsible use requires documentation. Preserve the data behind figures. Record parameters, initial conditions, solver settings, units, scales, transformations, grid resolution, color scales, smoothing rules, and uncertainty definitions. Use diagnostic visuals when results matter. Avoid presenting a model-implied graph as if it were direct evidence of the real system.

The central question is not only “Does the visualization communicate?” It is “Does the visualization make the model inspectable, reproducible, uncertainty-aware, and honest about its limits?”

Back to top ↑

Back to top ↑

Further Reading

  • Cleveland, W.S. (1993) Visualizing Data. Summit, NJ: Hobart Press.
  • Cleveland, W.S. (1994) The Elements of Graphing Data. Summit, NJ: Hobart Press.
  • Few, S. (2009) Now You See It: Simple Visualization Techniques for Quantitative Analysis. Oakland, CA: Analytics Press.
  • Munzner, T. (2014) Visualization Analysis and Design. Boca Raton, FL: CRC Press.
  • Tufte, E.R. (2001) The Visual Display of Quantitative Information. 2nd edn. Cheshire, CT: Graphics Press.
  • Ware, C. (2021) Information Visualization: Perception for Design. 4th edn. Cambridge, MA: Morgan Kaufmann.
  • Wilkinson, L. (2005) The Grammar of Graphics. 2nd edn. New York: Springer.
  • Wickham, H. (2016) ggplot2: Elegant Graphics for Data Analysis. 2nd edn. Cham: Springer.
  • Hunter, J.D. (2007) ‘Matplotlib: A 2D graphics environment’, Computing in Science & Engineering, 9(3), pp. 90–95.
  • Massachusetts Institute of Technology (MIT) OpenCourseWare (2011) Introduction to Numerical Analysis. Cambridge, MA: MIT OpenCourseWare.

Back to top ↑

References

  • Cleveland, W.S. (1993) Visualizing Data. Summit, NJ: Hobart Press.
  • Cleveland, W.S. (1994) The Elements of Graphing Data. Summit, NJ: Hobart Press.
  • Few, S. (2009) Now You See It: Simple Visualization Techniques for Quantitative Analysis. Oakland, CA: Analytics Press.
  • Hunter, J.D. (2007) ‘Matplotlib: A 2D graphics environment’, Computing in Science & Engineering, 9(3), pp. 90–95.
  • Munzner, T. (2014) Visualization Analysis and Design. Boca Raton, FL: CRC Press.
  • Tufte, E.R. (2001) The Visual Display of Quantitative Information. 2nd edn. Cheshire, CT: Graphics Press.
  • Ware, C. (2021) Information Visualization: Perception for Design. 4th edn. Cambridge, MA: Morgan Kaufmann.
  • Wickham, H. (2016) ggplot2: Elegant Graphics for Data Analysis. 2nd edn. Cham: Springer.
  • Wilkinson, L. (2005) The Grammar of Graphics. 2nd edn. New York: Springer.

Back to top ↑

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top