Octave print image into svg

Viewed 291

I am trying to print plot into svg file in Octave. However, the svg file is blurred, please see the images below. I am working on Octave6.2 on macOS Mojave, the code I used to generated those images are:

figure;
imagesc( rand( 3, 3));
print( gcf, '-dsvg', './test.svg');

Does anyone know what might be the reason? Thank you.

image in Octave

printed svg file

1 Answers

I entered your code into Octave on my system (v5.2.0, macOS Mojave) and ended up with this SVG:

<svg width="576pt" height="432pt" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 432" xmlns:xlink="http://www.w3.org/1999/xlink">
 <title>gl2ps_renderer figure</title>
 <desc>
Creator: GL2PS 1.4.1, (C) 1999-2020 C. Geuzaine
For: Octave
CreationDate: Sat Jun 12 11:00:44 2021
</desc>
 <defs/>
 <polygon points="0,0 576,0 576,432 0,432" fill="#ffffff"/>
 <g>
  <polygon points="0,432 576,432 576,0 0,0" shape-rendering="crispEdges" fill="#ffffff"/>
  <clipPath id="cp00576432">
   <polygon points="0,432 576,432 576,0 0,0"/>
  </clipPath>
  <g clip-path="url(#cp00576432)">
   <polygon points="74.88,32.4 74.88,384.48 521.28,384.48 521.28,32.4" shape-rendering="crispEdges" fill="#ffffff"/>
   <image transform="matrix(148.8,0,0,-117.36,74.88,384.48)" y="0" width="3" height="3" x="0" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAJ0lEQVQImWN0YQz5b23wWp+LxfrizzrRBdu/sTO/5stg1Hg+JzsIAK0AC+aAxFVTAAAAAElFTkSuQmCC"/>
   <polyline stroke="#262626" points="74.88,384.48 74.88,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,32.4 74.88,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="149.28,384.48 149.28,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="149.28,32.4 149.28,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="223.68,384.48 223.68,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="223.68,32.4 223.68,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="298.08,384.48 298.08,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="298.08,32.4 298.08,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="372.48,384.48 372.48,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="372.48,32.4 372.48,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="446.88,384.48 446.88,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="446.88,32.4 446.88,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,384.48 521.28,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,32.4 521.28,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <text transform="translate(67.38,399.982) rotate(-0,7.5,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">0.5</tspan>
   </text>
   <text transform="translate(146.28,399.982) rotate(-0,3,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">1</tspan>
   </text>
   <text transform="translate(216.18,399.982) rotate(-0,7.5,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">1.5</tspan>
   </text>
   <text transform="translate(295.08,399.982) rotate(-0,3,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">2</tspan>
   </text>
   <text transform="translate(364.98,399.982) rotate(-0,7.5,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">2.5</tspan>
   </text>
   <text transform="translate(443.88,399.982) rotate(-0,3,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">3</tspan>
   </text>
   <text transform="translate(513.78,399.982) rotate(-0,7.5,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">3.5</tspan>
   </text>
   <polyline stroke="#262626" points="74.88,32.4 79.348,32.4" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,32.4 516.812,32.4" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,91.08 79.348,91.08" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,91.08 516.812,91.08" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,149.76 79.348,149.76" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,149.76 516.812,149.76" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,208.44 79.348,208.44" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,208.44 516.812,208.44" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,267.12 79.348,267.12" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,267.12 516.812,267.12" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,325.8 79.348,325.8" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,325.8 516.812,325.8" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,384.48 79.348,384.48" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,384.48 516.812,384.48" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <text transform="translate(54.8755,36.4) rotate(-0,15,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">0.5</tspan>
   </text>
   <text transform="translate(63.8755,95.08) rotate(-0,6,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">1</tspan>
   </text>
   <text transform="translate(54.8755,153.76) rotate(-0,15,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">1.5</tspan>
   </text>
   <text transform="translate(63.8755,212.44) rotate(-0,6,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">2</tspan>
   </text>
   <text transform="translate(54.8755,271.12) rotate(-0,15,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">2.5</tspan>
   </text>
   <text transform="translate(63.8755,329.8) rotate(-0,6,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">3</tspan>
   </text>
   <text transform="translate(54.8755,388.48) rotate(-0,15,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">3.5</tspan>
   </text>
   <polyline stroke-dasharray="16,0" stroke="#262626" points="74.88,384.48 521.28,384.48" stroke-width="0.5" fill="none" stroke-linecap="square" stroke-linejoin="miter"/>
   <polyline stroke-dasharray="16,0" stroke="#262626" points="74.88,32.4 521.28,32.4" stroke-width="0.5" fill="none" stroke-linecap="square" stroke-linejoin="miter"/>
   <polyline stroke-dasharray="16,0" stroke="#262626" points="74.88,384.48 74.88,32.4" stroke-width="0.5" fill="none" stroke-linecap="square" stroke-linejoin="miter"/>
   <polyline stroke-dasharray="16,0" stroke="#262626" points="521.28,384.48 521.28,32.4" stroke-width="0.5" fill="none" stroke-linecap="square" stroke-linejoin="miter"/>
  </g>
 </g>
</svg>

The markup is rather verbose, but it looks like the coloured boxes are actually rendered as a 3×3 pixel embedded PNG image:

<image transform="matrix(148.8,0,0,-117.36,74.88,384.48)" y="0" width="3" height="3" x="0" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAJ0lEQVQImWN0YQz5b23wWp+LxfrizzrRBdu/sTO/5stg1Hg+JzsIAK0AC+aAxFVTAAAAAElFTkSuQmCC"/>

Your browser is scaling up this image by over a hundred times, which is why it appears to be completely blurred. I didn't see any options in Octave for fixing this problem, but you could just open the SVG file in a plain text editor and add image-rendering="pixelated" to this <image> tag. (This at least works in the latest version of the Chrome browser.)

<svg width="576pt" height="432pt" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 432" xmlns:xlink="http://www.w3.org/1999/xlink">
 <title>gl2ps_renderer figure</title>
 <desc>
Creator: GL2PS 1.4.1, (C) 1999-2020 C. Geuzaine
For: Octave
CreationDate: Sat Jun 12 11:00:44 2021
</desc>
 <defs/>
 <polygon points="0,0 576,0 576,432 0,432" fill="#ffffff"/>
 <g>
  <polygon points="0,432 576,432 576,0 0,0" shape-rendering="crispEdges" fill="#ffffff"/>
  <clipPath id="cp00576432">
   <polygon points="0,432 576,432 576,0 0,0"/>
  </clipPath>
  <g clip-path="url(#cp00576432)">
   <polygon points="74.88,32.4 74.88,384.48 521.28,384.48 521.28,32.4" shape-rendering="crispEdges" fill="#ffffff"/>
   <image image-rendering="pixelated" transform="matrix(148.8,0,0,-117.36,74.88,384.48)" y="0" width="3" height="3" x="0" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAJ0lEQVQImWN0YQz5b23wWp+LxfrizzrRBdu/sTO/5stg1Hg+JzsIAK0AC+aAxFVTAAAAAElFTkSuQmCC"/>
   <polyline stroke="#262626" points="74.88,384.48 74.88,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,32.4 74.88,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="149.28,384.48 149.28,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="149.28,32.4 149.28,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="223.68,384.48 223.68,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="223.68,32.4 223.68,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="298.08,384.48 298.08,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="298.08,32.4 298.08,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="372.48,384.48 372.48,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="372.48,32.4 372.48,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="446.88,384.48 446.88,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="446.88,32.4 446.88,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,384.48 521.28,380.015" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,32.4 521.28,36.865" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <text transform="translate(67.38,399.982) rotate(-0,7.5,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">0.5</tspan>
   </text>
   <text transform="translate(146.28,399.982) rotate(-0,3,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">1</tspan>
   </text>
   <text transform="translate(216.18,399.982) rotate(-0,7.5,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">1.5</tspan>
   </text>
   <text transform="translate(295.08,399.982) rotate(-0,3,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">2</tspan>
   </text>
   <text transform="translate(364.98,399.982) rotate(-0,7.5,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">2.5</tspan>
   </text>
   <text transform="translate(443.88,399.982) rotate(-0,3,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">3</tspan>
   </text>
   <text transform="translate(513.78,399.982) rotate(-0,7.5,-8)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">3.5</tspan>
   </text>
   <polyline stroke="#262626" points="74.88,32.4 79.348,32.4" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,32.4 516.812,32.4" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,91.08 79.348,91.08" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,91.08 516.812,91.08" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,149.76 79.348,149.76" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,149.76 516.812,149.76" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,208.44 79.348,208.44" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,208.44 516.812,208.44" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,267.12 79.348,267.12" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,267.12 516.812,267.12" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,325.8 79.348,325.8" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,325.8 516.812,325.8" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="74.88,384.48 79.348,384.48" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <polyline stroke="#262626" points="521.28,384.48 516.812,384.48" stroke-width="0.5" fill="none" stroke-linecap="butt" stroke-linejoin="miter"/>
   <text transform="translate(54.8755,36.4) rotate(-0,15,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">0.5</tspan>
   </text>
   <text transform="translate(63.8755,95.08) rotate(-0,6,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">1</tspan>
   </text>
   <text transform="translate(54.8755,153.76) rotate(-0,15,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">1.5</tspan>
   </text>
   <text transform="translate(63.8755,212.44) rotate(-0,6,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">2</tspan>
   </text>
   <text transform="translate(54.8755,271.12) rotate(-0,15,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">2.5</tspan>
   </text>
   <text transform="translate(63.8755,329.8) rotate(-0,6,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 " fill="rgb(38,38,38)">3</tspan>
   </text>
   <text transform="translate(54.8755,388.48) rotate(-0,15,-4)" font-size="10" font-style="normal" font-family="FreeSans" xml:space="preserve" font-weight="normal">
    <tspan y="-0" x="0 6 9 " fill="rgb(38,38,38)">3.5</tspan>
   </text>
   <polyline stroke-dasharray="16,0" stroke="#262626" points="74.88,384.48 521.28,384.48" stroke-width="0.5" fill="none" stroke-linecap="square" stroke-linejoin="miter"/>
   <polyline stroke-dasharray="16,0" stroke="#262626" points="74.88,32.4 521.28,32.4" stroke-width="0.5" fill="none" stroke-linecap="square" stroke-linejoin="miter"/>
   <polyline stroke-dasharray="16,0" stroke="#262626" points="74.88,384.48 74.88,32.4" stroke-width="0.5" fill="none" stroke-linecap="square" stroke-linejoin="miter"/>
   <polyline stroke-dasharray="16,0" stroke="#262626" points="521.28,384.48 521.28,32.4" stroke-width="0.5" fill="none" stroke-linecap="square" stroke-linejoin="miter"/>
  </g>
 </g>
</svg>

Related