Source code for tecplot.text.font

from builtins import str, super

from ..exception import *
from .. import constant, session
from ..tecutil import sv


[docs]class Font(session.Style): """Style of text objects such as titles and labels. This class controls the typeface and size of various text objects found in plots and axes: .. code-block:: python :emphasize-lines: 26-30 from os import path import tecplot as tp from tecplot.constant import PlotType, Units, AxisTitleMode examples_dir = tp.session.tecplot_examples_directory() infile = path.join(examples_dir, 'OneraM6wing', 'OneraM6_SU2_RANS.plt') dataset = tp.data.load_tecplot(infile) frame = tp.active_frame() plot = frame.plot(PlotType.Cartesian2D) plot.activate() plot.show_contour = True xaxis = plot.axes.x_axis xaxis.title.title_mode = AxisTitleMode.UseText xaxis.title.text = 'Longitudinal (m)' xaxis.min, xaxis.max = 0, 1.2 yaxis = plot.axes.y_axis yaxis.title.title_mode = AxisTitleMode.UseText yaxis.title.text = 'Transverse (m)' yaxis.min, yaxis.max = 0, 1.3 for ax in [xaxis, yaxis]: ax.title.font.typeface = 'Times' ax.title.font.bold = False ax.title.font.italic = True ax.title.font.size_units = Units.Frame ax.title.font.size = 7 # ensure consistent output between interactive (connected) and batch plot.contour(0).levels.reset_to_nice() tp.export.save_png('font.png', 600, supersample=3) .. figure:: /_static/images/font.png :width: 300px :figwidth: 300px """ def __init__(self, parent, sv_textshape=sv.TEXTSHAPE): self.parent = parent super().__init__(parent._sv, sv_textshape, **parent._kw) @property def bold(self): """`bool`: Use the bold version of the current typeface. Example:: >>> axis.title.font.bold = True """ return self._get_style(bool, sv.ISBOLD) @bold.setter def bold(self, value): self._set_style(bool(value), sv.ISBOLD) @property def italic(self): """`bool`: Use the italic version of the current typeface. Example:: >>> axis.title.font.italic = True """ return self._get_style(bool, sv.ISITALIC) @italic.setter def italic(self, value): self._set_style(bool(value), sv.ISITALIC) @property def size(self): """`float`: Height of the font. in units of `Font.size_units`. Example usage:: >>> axis.title.font.size = 10 """ return self._get_style(float, sv.HEIGHT) @size.setter def size(self, value): self._set_style(float(value), sv.HEIGHT) @property def size_units(self): """`constant.Units`: Used by the size attribute. Possible values: `Units.Point`, `Units.Frame` (percentage of frame height). This example sets the axis title to 10% of the frame height:: >>> from tecplot.constant import Units >>> axis.title.font.size_units = Units.Frame >>> axis.title.font.size = 10 """ return self._get_style(constant.Units, sv.SIZEUNITS) @size_units.setter def size_units(self, value): size = self.size self._set_style(constant.Units(value), sv.SIZEUNITS) self.size = size @property def typeface(self): """`str`: Specific font (or typeface) to use for text. This can be any font installed on the current system. If the font is not found, Times or Helvetica will be used when rendering the text. Example usage:: >>> axis.title.font.typeface = 'Times' """ return self._get_style(str, sv.FONTFAMILY) @typeface.setter def typeface(self, value): self._set_style(str(value), sv.FONTFAMILY)
[docs]class BaseFont(session.Style): """Plot-level or scatter font style fall-back settings. .. note:: Base fonts are accessible directly from line plots (`XYLinePlot.base_font`, `PolarLinePlot.base_font`):: >>> frame.plot(PlotType.XYLine).base_font and the scatter style of field plots (`Scatter.base_font`):: >>> frame.plot(PlotType.Cartesian3D).scatter.base_font """ @property def typeface(self): """`str`: Specific font (or typeface) to use for text. This can be any font installed on the current system. If the font is not found, Times or Helvetica will be used when rendering the text. Example usage:: >>> line_plot.base_font.typeface = 'Times' >>> field_plot.scatter.base_font.typeface = 'Times' """ return self._get_style(str, sv.BASEFONTFAMILY) @typeface.setter def typeface(self, value): self._set_style(str(value), sv.BASEFONTFAMILY) @property def bold(self): """`bool`: Use the bold version of the current typeface. Example:: >>> line_plot.base_font.bold = True >>> field_plot.scatter.base_font.bold = True """ return self._get_style(bool, sv.BASEFONTISBOLD) @bold.setter def bold(self, value): self._set_style(bool(value), sv.BASEFONTISBOLD) @property def italic(self): """`bool`: Use the italic version of the current typeface. Example:: >>> line_plot.base_font.italic = True >>> field_plot.scatter.base_font.italic = True """ return self._get_style(bool, sv.BASEFONTISITALIC) @italic.setter def italic(self, value): self._set_style(bool(value), sv.BASEFONTISITALIC)
class LegendFont(Font): """`LegendFont` is a font that restricts the setting of size_units.""" @property def size_units(self): """`Units <constant.Units>`: Units used by the size attribute. Possible values: `Units.Point`, `Units.Frame` (percentage of frame height). This example sets the axis title to 10% of the frame height:: >>> legend.font.size_units = Units.Frame >>> legend.font.size = 10 """ return self._get_style(constant.Units, sv.SIZEUNITS) @size_units.setter def size_units(self, value): value = constant.Units(value) if __debug__: if value not in (constant.Units.Frame, constant.Units.Point): msg = '''\ Legend font size units must be one of: Units.Frame, Units.Point''' raise TecplotValueError(msg) self._set_style(value, sv.SIZEUNITS)