SVGマスターへの道

付録A5: インタラクティブな数学関数グラフ

SVGとJavaScriptを組み合わせることで、数学の関数グラフを動的に描画し、ユーザーがパラメータを変更してその影響をリアルタイムに確認できるインタラクティブな学習ツールを作成できます。このサンプルでは、二次関数と三角関数(サイン波)のグラフを例に、その基本的な実装方法を紹介します。

完成デモ: 関数グラフジェネレーター

下のコントロールで関数の種類とパラメータを選択・変更すると、SVGで描画されたグラフがリアルタイムに更新されます。グラフ上にマウスカーソルを合わせると、その点の座標(数学的な値)がツールチップで表示されます。

二次関数パラメータ
{/* viewBox is set to represent math coordinates directly for this demo for simplicity */} {/* Axes and Grid will be drawn by JS to fit this math coordinate system */} {/* Grid lines */} {/* X-axis */} x {/* Y-axis */} y {/* Origin Label */} 0

使用した主なテクニック

豆知識 (English/日本語)

Did you know? For displaying mathematical formulas themselves (not just their graphs), MathML (Mathematical Markup Language) is an XML-based language often used alongside SVG or HTML. While SVG excels at drawing the visual graph, MathML is designed to semantically describe the structure of equations, which can improve accessibility and interoperability of mathematical content.

知っていましたか?数学の数式自体を表示する(グラフだけでなく)ためには、MathML (Mathematical Markup Language) というXMLベースの言語が、SVGやHTMLと共によく使われます。SVGが視覚的なグラフを描画するのに優れているのに対し、MathMLは数式の構造を意味的に記述するように設計されており、これにより数学コンテンツのアクセシビリティや相互運用性を向上させることができます。

まとめ

SVGとJavaScriptを組み合わせることで、インタラクティブな数学関数グラフをウェブ上で手軽に実現できます。ユーザーがパラメータを操作し、その結果がグラフに即座に反映される様子は、数学の概念理解を助ける強力なツールとなり得ます。

このサンプルでは基本的な二次関数と三角関数、三次関数を扱いましたが、同様のアプローチでさらに多くの種類の関数グラフを描画したり、ズームやパンといった高度な機能を追加したりすることも可能です。データビジュアライゼーションの一形態として、SVGの柔軟性が光る分野です。

次は、「付録A6: 株価ローソク足チャート」で、また異なる種類のデータ表現に挑戦します。

このページの要約

日本語

このページでは、SVGとJavaScriptを使ってインタラクティブな数学関数グラフ(二次関数、三角関数、三次関数)を描画するサンプルを作成しました。ユーザーが関数の種類やパラメータを変更すると、グラフがリアルタイムに更新されます。SVGの<path>要素で関数線を描画し、軸やグリッド線は<line><text>で表現。JavaScriptで関数の値を計算し、SVG座標にマッピングしてパスデータを生成、DOM操作でグラフを更新しています。マウスオーバーによる座標ツールチップ機能も実装しました。

English

This page created a sample for drawing interactive mathematical function graphs (quadratic, trigonometric, cubic) using SVG and JavaScript. The graph updates in real-time as users change function types or parameters. SVG <path> elements draw function lines, while axes and gridlines are represented by <line> and <text>. JavaScript calculates function values, maps them to SVG coordinates, generates path data, and updates the graph via DOM manipulation. A coordinate tooltip feature on mouseover was also implemented.

Español

Esta página creó una muestra para dibujar gráficos interactivos de funciones matemáticas (cuadráticas, trigonométricas, cúbicas) usando SVG y JavaScript. El gráfico se actualiza en tiempo real a medida que los usuarios cambian los tipos de funciones o parámetros. Los elementos <path> de SVG dibujan líneas de función, mientras que los ejes y las líneas de la cuadrícula están representados por <line> y <text>. JavaScript calcula los valores de la función, los asigna a coordenadas SVG, genera datos de ruta y actualiza el gráfico mediante la manipulación del DOM. También se implementó una función de información sobre herramientas de coordenadas al pasar el mouse.

中文

本页创建了一个使用SVG和JavaScript绘制交互式数学函数图(二次函数、三角函数、三次函数)的示例。当用户更改函数类型或参数时,图形会实时更新。SVG <path>元素绘制函数线条,而轴和网格线由<line><text>表示。JavaScript计算函数值,将其映射到SVG坐标,生成路径数据,并通过DOM操作更新图形。还实现了鼠标悬停时的坐标工具提示功能。