Source code for tecplot.plot.font
from builtins import super
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: 24-28
from os import path
import tecplot as tp
from tecplot.constant import PlotType, Units
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.text = 'Longitudinal (m)'
xaxis.min, xaxis.max = 0, 1.2
yaxis = plot.axes.y_axis
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
tp.export.save_png('font.png', 600)
.. figure:: /_static/images/font.png
:width: 300px
:figwidth: 300px
"""
def __init__(self, parent):
self.parent = parent
super().__init__(parent._sv, sv.TEXTSHAPE, **parent._style_attrs)
@property
def bold(self):
"""Use the bold version of the current typeface.
:type: `boolean <bool>`
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):
"""Use the italic version of the current typeface.
:type: `boolean <bool>`
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):
"""Height of the font.
:type: `float` 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):
"""Units used by the size attribute.
:type: `Units <constant.Units>`
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
"""
constant.Units.AxisPercentage
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):
"""Specific font (or typeface) to use for text.
:type: `string <str>`
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)