ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Matplotlib绘图设置---文字和标签

2022-01-08 20:02:40  阅读:170  来源: 互联网

标签:head default text axes Matplotlib --- xy 绘图 ax


文字和文字位置

通过plt.text()或ax.text()命令可在图形上添加文字。

Signature: 
ax.text(x, y, s, fontdict=None, withdash=<deprecated parameter>, **kwargs)
Docstring:
Add text to the axes.

Add the text *s* to the axes at location *x*, *y* in data coordinates.

Parameters
----------
x, y : scalars
    The position to place the text. By default, this is in data
    coordinates. The coordinate system can be changed using the
    *transform* parameter.

s : str
    The text.

fontdict : dictionary, optional, default: None
    A dictionary to override the default text properties. If fontdict
    is None, the defaults are determined by your rc parameters.

withdash : boolean, optional, default: False
    Creates a `~matplotlib.text.TextWithDash` instance instead of a
    `~matplotlib.text.Text` instance.

Returns
-------
text : `.Text`
    The created `.Text` instance.

Other Parameters
----------------
**kwargs : `~matplotlib.text.Text` properties.
    Other miscellaneous text parameters.

Examples
--------
Individual keyword arguments can be used to override any given
parameter::

    >>> text(x, y, s, fontsize=12)

The default transform specifies that text is in data coords,
alternatively, you can specify text in axis coords (0,0 is
lower-left and 1,1 is upper-right).  The example below places
text in the center of the axes::

    >>> text(0.5, 0.5, 'matplotlib', horizontalalignment='center',
    ...      verticalalignment='center', transform=ax.transAxes)

You can put a rectangular box around the text instance (e.g., to
set a background color) by using the keyword `bbox`.  `bbox` is
a dictionary of `~matplotlib.patches.Rectangle`
properties.  For example::

    >>> text(x, y, s, bbox=dict(facecolor='red', alpha=0.5))

text函数中transform参数用于设置坐标变换,Matplotlib一共有三种方式设置文字位置:

  • ax.transData : 默认的,以数据为基准的坐标变换(x轴和y轴的标签作为数据坐标);
  • ax.transAxes: 以坐标轴为基准的坐标变换(以坐标轴左下角原点,按坐标轴尺寸的比例呈现坐标);
  • fig.transFigure:以图形为基准的坐标变换(以图纸左下角原点,按图形尺寸的比例呈现坐标)。

三个坐标系呈现的文字都是左对齐,当改变坐标轴上下限时,只有transData坐标会受影响,其它两个坐标系不变。

fig, ax = plt.subplots(facecolor='lightgray')
ax.axis([0, 10, 0, 10])

ax.text(1, 5, ".Data:(1, 5)", transform=ax.transData)
ax.text(0.5, 0.1, ".Axes:(0.5, 0.1)", transform=ax.transAxes)
ax.text(0.2, 0.2, ".Figure:(0.2, 0.2)", transform=fig.transFigure)

ax.set_xlim(0, 2)
ax.set_ylim(-6, 6)
fig

箭头和注释

Matplotlib中plt.annotate()/ax.annotate()函数可用于创建文字以及箭头等。

Signature: 
ax.annotate(s, xy, *args, **kwargs)

Docstring:
Annotate the point *xy* with text *text*.

In the simplest form, the text is placed at *xy*.

Optionally, the text can be displayed in another position *xytext*.
An arrow pointing from the text to the annotated point *xy* can then
be added by defining *arrowprops*.

Parameters
----------
text : str
    The text of the annotation.  *s* is a deprecated synonym for this
    parameter.

xy : (float, float)
    The point *(x,y)* to annotate.

xytext : (float, float), optional
    The position *(x,y)* to place the text at.
    If *None*, defaults to *xy*.

xycoords : str, `.Artist`, `.Transform`, callable or tuple, optional

    The coordinate system that *xy* is given in. The following types
    of values are supported:

    - One of the following strings:

      =================   =============================================
      Value               Description
      =================   =============================================
      'figure points'     Points from the lower left of the figure
      'figure pixels'     Pixels from the lower left of the figure
      'figure fraction'   Fraction of figure from lower left
      'axes points'       Points from lower left corner of axes
      'axes pixels'       Pixels from lower left corner of axes
      'axes fraction'     Fraction of axes from lower left
      'data'              Use the coordinate system of the object being
                          annotated (default)
      'polar'             *(theta,r)* if not native 'data' coordinates
      =================   =============================================

    - An `.Artist`: *xy* is interpreted as a fraction of the artists
      `~matplotlib.transforms.Bbox`. E.g. *(0, 0)* would be the lower
      left corner of the bounding box and *(0.5, 1)* would be the
      center top of the bounding box.

    - A `.Transform` to transform *xy* to screen coordinates.

    - A function with one of the following signatures::

        def transform(renderer) -> Bbox
        def transform(renderer) -> Transform

      where *renderer* is a `.RendererBase` subclass.

      The result of the function is interpreted like the `.Artist` and
      `.Transform` cases above.

    - A tuple *(xcoords, ycoords)* specifying separate coordinate
      systems for *x* and *y*. *xcoords* and *ycoords* must each be
      of one of the above described types.

    See :ref:`plotting-guide-annotation` for more details.

    Defaults to 'data'.

textcoords : str, `.Artist`, `.Transform`, callable or tuple, optional
    The coordinate system that *xytext* is given in.

    All *xycoords* values are valid as well as the following
    strings:

    =================   =========================================
    Value               Description
    =================   =========================================
    'offset points'     Offset (in points) from the *xy* value
    'offset pixels'     Offset (in pixels) from the *xy* value
    =================   =========================================

    Defaults to the value of *xycoords*, i.e. use the same coordinate
    system for annotation point and text position.

arrowprops : dict, optional
    The properties used to draw a
    `~matplotlib.patches.FancyArrowPatch` arrow between the
    positions *xy* and *xytext*.

    If *arrowprops* does not contain the key 'arrowstyle' the
    allowed keys are:

    ==========   ======================================================
    Key          Description
    ==========   ======================================================
    width        The width of the arrow in points
    headwidth    The width of the base of the arrow head in points
    headlength   The length of the arrow head in points
    shrink       Fraction of total length to shrink from both ends
    ?            Any key to :class:`matplotlib.patches.FancyArrowPatch`
    ==========   ======================================================

    If *arrowprops* contains the key 'arrowstyle' the
    above keys are forbidden.  The allowed values of
    ``'arrowstyle'`` are:

    ============   =============================================
    Name           Attrs
    ============   =============================================
    ``'-'``        None
    ``'->'``       head_length=0.4,head_width=0.2
    ``'-['``       widthB=1.0,lengthB=0.2,angleB=None
    ``'|-|'``      widthA=1.0,widthB=1.0
    ``'-|>'``      head_length=0.4,head_width=0.2
    ``'<-'``       head_length=0.4,head_width=0.2
    ``'<->'``      head_length=0.4,head_width=0.2
    ``'<|-'``      head_length=0.4,head_width=0.2
    ``'<|-|>'``    head_length=0.4,head_width=0.2
    ``'fancy'``    head_length=0.4,head_width=0.4,tail_width=0.4
    ``'simple'``   head_length=0.5,head_width=0.5,tail_width=0.2
    ``'wedge'``    tail_width=0.3,shrink_factor=0.5
    ============   =============================================

    Valid keys for `~matplotlib.patches.FancyArrowPatch` are:

    ===============  ==================================================
    Key              Description
    ===============  ==================================================
    arrowstyle       the arrow style
    connectionstyle  the connection style
    relpos           default is (0.5, 0.5)
    patchA           default is bounding box of the text
    patchB           default is None
    shrinkA          default is 2 points
    shrinkB          default is 2 points
    mutation_scale   default is text size (in points)
    mutation_aspect  default is 1.
    ?                any key for :class:`matplotlib.patches.PathPatch`
    ===============  ==================================================

    Defaults to None, i.e. no arrow is drawn.

annotation_clip : bool or None, optional
    Whether to draw the annotation when the annotation point *xy* is
    outside the axes area.

    - If *True*, the annotation will only be drawn when *xy* is
      within the axes.
    - If *False*, the annotation will always be drawn.
    - If *None*, the annotation will only be drawn when *xy* is
      within the axes and *xycoords* is 'data'.

    Defaults to *None*.

**kwargs
    Additional kwargs are passed to `~matplotlib.text.Text`.
fig, ax = plt.subplots()

x = np.linspace(0, 20, 1000)
ax.plot(x, np.cos(x))
ax.axis('equal')

#arrowprops用于设置箭头风格,xy设置箭头位置,xytext设置文字位置
ax.annotate('local maximum', xy=(6.28, 1), xytext=(10, 4),
            arrowprops=dict(facecolor='black', shrink=0.05))

ax.annotate('local minimum', xy=(5 * np.pi, -1), xytext=(2, -6),
            arrowprops=dict(arrowstyle="->",connectionstyle="angle3,angleA=0,angleB=90"))

标签:head,default,text,axes,Matplotlib,---,xy,绘图,ax
来源: https://www.cnblogs.com/xiqi2018/p/15779401.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有