plotSetTextInterpreter
==============================================
Purpose
----------------
Controls the text interpreter settings for a graph.
Format
----------------
.. function:: plotSetTextInterpreter(&myPlot, interpreter[, location])
:param &myPlot: A :class:`plotControl` structure pointer.
:type &myPlot: struct pointer
:param interpreter: ``"html"``, ``"plain"``, ``"latex"``.
:type interpreter: string
:param location: Optional argument, which attributes the interpreter change applies to :
**Valid options:**
.. list-table::
:widths: auto
* - "all" (default)
* - "legend"
* - "legend_title"
* - "title"
* - "axes"
* - "xaxis"
* - "xtop"
* - "xbottom"
* - "yaxis"
* - "yleft"
* - "yright"
:type location: string
Examples
----------------
Plain interpreter
+++++++++++++++++
The HTML text interpreter treats certain characters, such as greater-than and less-than signs, as mark-up rather than literal text to display. The Plain
text interpretor will allow you to use these symbols directly in your plot text labels.
::
new;
// Declare plotControl structure
struct plotControl myPlot;
// Initialize plotControl structure
myPlot = plotGetDefaults("hist");
// Set the interpreter of axes
plotSetTextInterpreter(&myPlot, "plain", "axes");
// Set the x-axis label, using the > character which would
// would fail with the default HTML interpreter.
plotSetXLabel(&myPlot, "Weight > 50 Kg");
// Create data
x = rndn(1e5, 1);
// Plot a histogram of the x data spread over 50 bins
plotHist(myPlot, x, 50);
HTML interpreter
++++++++++++++++
You may add Greek letters, mathematical symbols, subscript and superscript to your title, axes and legend using HTML. To add HTML to a label, you can use :func:`plotSetTextInterpreter` to set "html" for the text to be interpreted as HTML.
::
// Set the interpreter of axes
plotSetTextInterpreter(&myPlot, "html", "axes");
label_string = "β";
// Set the x-axis label
plotSetXLabel(&myPlot, label_string);
The code above will add the letter :math:`\beta` to the graph title. The HTML 'sup' tag will create superscript and the 'sub' tag will create subscript. For example:
::
label_string = "σ2";
// Set the x-axis label
plotSetXLabel(&myPlot, label_string);
will add :math:`\sigma^2` to your title. While,
::
label_string = "Yt-1";
// Set the x-axis label
plotSetXLabel(&myPlot, label_string);
will create :math:`Y_{t-1}`.
LaTeX Interpreter
+++++++++++++++++
You can also use LaTeX to add complex math expression, or non-Latin scripts to your title, axes, and legend. You can use :func:`plotSetTextInterpreter` to set "latex"for the text to be interpreted as LaTeX.
::
new;
// Declare plotControl structure
// and fill with default XY settings
struct plotControl myPlot;
myPlot = plotGetDefaults("xy");
// Set LaTeX text interpreter for all text on plot
plotSetTextInterpreter(&myPlot, "latex", "all");
font_name = "Times New Roman";
// Set up x-axis label
plotSetXLabel(&myPlot, "x", font_name, 20);
// Set LaTeX legend string
string legend_string = {
"y_1 = \\cos{(x - 1.5)}",
"y_2 = \\sin{(\\frac{x}{2})} = \\pm \\sqrt{\\frac{1-\\cos{(x)}}{2}}",
"y_3 = \\cos{(\\frac{x}{2})} = \\pm \\sqrt{\\frac{1+\\cos{(x)}}{2}}"};
plotSetLegend(&myPlot, legend_string, "bottom left inside", 1);
plotSetLegendBkd(&myPlot, 0);
plotSetLegendFont(&myPlot, font_name, 12);
// Set up title
title_string = "\\text{Trigonometric Functions}";
plotSetTitle(&myPlot, title_string, font_name, 18);
// Create data
n = 50;
x = seqa(0,(2*pi)/(n-1), n);
// Specify size of plot canvas
plotCanvasSize("px", 600 | 300);
// Draw plot
plotXY(myPlot, x, cos(x-1.5)~sin(x/2)~cos(x/2));
The plot is
.. figure:: _static/images/plotsettextinterpreter.jpg
:scale: 50 %
Remarks
-------
When the text interpreter is set to use LaTeX:
- Since backslashes inside of a string represent the escaping of a
character, use double backslashes to represent a backslash.
- The default mode is that of an in-line equation. To add a section of
strictly text, wrap the text only section in ``\\text{}``. For example:
::
"\\text{The formula is } \\alpha + \\beta_1 X + \\epsilon"
- Text outside of a ``\\text{}`` section will use the TeX font. Text inside
of a ``\\text{}`` section will use whatever font was specified for the
label.
The ``plain`` text interpreter will allow you to pass in characters that
would be invalid HTML, such as the symbols '``<``' and '``>``'.
.. include:: include/plotattrremark.rst
.. seealso:: Functions :func:`plotGetDefaults`, :func:`plotSetYLabel`, :func:`plotSetXLabel`, :func:`plotSetTitle`, :func:`plotSetLegend`