Add SVG writer for matrices
Summary
Grasping nested matrix structures is challenging. When the matrix has more than one block level, writing down the values and indices help very little to get an idea of how the matrix looks like. I am not aware of any tool for visualizing blocked matrices, so this MR resolves that question.
What does this MR do?
This MR adds a function to write matrices into the SVG format. In particular, the function calculates recursively the bounding box of every block in a possible nested matrix and writes an SVG object in it.
Features:
- The default options write a rectangle on every bounding box and a title with their multi-indices (in HTML, the title appears on mouse hover).
- The SVG can be customized to write any SVG object in their bounding box (e.g. colored blocks or any custom glyph).
- It works with many types of nested matrices:
FieldMatrix
,DiagonalMatrix
,ScaledIdentityMatrix
,BCRSMatrix
, etc.
Examples
How about medium matrices?
Redering SVG directly may not work if there are too many entries. In that case, it is very simple to convert SVG to PNG using inkscape
inkscape -z -w 20000 -h 20000 matrix.svg -e matrix.png
Example
Edited by Santiago Ospina De Los Ríos