Graphic Images, TikZ

Create a graph using tikz.

Complete Code

Download file: TikZImages.pg

POD for Macro Files

PG problem file

Explanation

DOCUMENT();

loadMacros('PGstandard.pl', 'PGML.pl', 'PGtikz.pl', 'PGcourse.pl');

Preamble

PGtikz.pl is used to generate the graph,

$graph_image = createTikZImage();
$graph_image->tikzLibraries("arrows.meta");

# Randomization
$a = non_zero_random(-6, 6);    # horizonatal translation
$b = random(-4, 4);             # vertical translation

$graph_image->BEGIN_TIKZ
\tikzset{>={Stealth[scale = 1.5]}}
\filldraw[
    draw = LightBlue,
    fill = white,
    rounded corners = 10pt,
    thick,
    use as bounding box
] (-11,-11) rectangle (11,11);
\huge
\draw[<->, thick] (-11, 0) -- (11, 0) node[above left,outer sep = 4pt]{\(x\)};
\draw[<->, thick] (0, -11) -- (0, 11) node[below right, outer sep = 4pt]{\(y\)};
\foreach \x in {-10, -8, ..., -2, 2, 4, ..., 10}
    \draw[thin] (\x, 5pt) -- (\x, -5pt) node[below]{\(\x\)};
\foreach \y in {-10, -8, ..., -2, 2, 4, ..., 10}
    \draw[thin] (5pt, \y) -- (-5pt, \y) node[left]{\(\y\)};
\draw[<->, Blue, thick]
    plot[domain = -11:11, samples=50, smooth] (\x, {(\x - $a)^2 + $b});
END_TIKZ

Setup

The createTikZImage function creates an image to be built using TikZ.

An svg image will be generated by default which will generally work better than a png image due to being scalable. In rare cases the svg creation methods do not give the correct output, and so in those cases a png image may be generated instead by adding $graph_image->ext('png').

The $graph_image->tikzLibraries("arrows.meta") will load the arrows.meta Tikz library.

The variables $a and $b are defined for use in the TikZ code that follows.

The actual TikZ image is built between $graph_image->BEGIN_TIKZ and END_TIKZ

The command \tikzset{>={Stealth[scale = 1.5]}} scales the arrows by a factor of 1.5.

The \filldraw command creates a nice background for the graph that provides contrast with the problem background color.

The \draw commands that follow draw the x and y axis and labels.

The \foreach loops \draw ticks and tick labels on the axes.

Finally, the function is plotted with the \draw plot command.

BEGIN_PGML
>>[!TODO!]{$graph_image}{400}{ image_options => { tex_size => 600 } }<<
END_PGML

Statement

Insert the TikZ image using the PGML image syntax.

  • The width in pixels for display in HTML is set in the first option argument (in this case 400).

  • The tex_size option determines the size of the image for hard copy and can be set using the image_options. The tex_size option is the scale factor for hardcopy where 1000 is the full width of either the page or the column. This image will be 60% of the page width.

If the problem times out then often there may be a problem with the TikZ code. Troubleshooting is often needed by running the same code in a latex file and compiling it.

BEGIN_PGML_SOLUTION
Solution explanation goes here.
END_PGML_SOLUTION

ENDDOCUMENT();

Solution

A solution should be provided here.