返回介绍

数学基础

统计学习

深度学习

工具

Scala

九、技巧

发布于 2023-07-17 23:38:23 字数 5942 浏览 0 评论 0 收藏 0

1. 共享坐标轴

  1. 当你通过pyplot.subplot()pyplot.axes()函数或者Figure.add_subplot()Figure.add_axes()方法创建一个Axes时,你可以通过sharex关键字参数传入另一个Axes表示共享X轴;或者通过sharey关键字参数传入另一个Axes表示共享Y轴。

    共享轴线时,当你缩放某个Axes时,另一个Axes也跟着缩放。

    共享坐标轴

2. 创建多个 subplot

  1. 如果你想创建网格中的许多subplot,旧式风格的代码非常繁琐:

    
    
    xxxxxxxxxx
    #旧式风格 fig=plt.figure() ax1=fig.add_subplot(221) ax2=fig.add_subplot(222,sharex=ax1,sharey=ax1) ax3=fig.add_subplot(223,sharex=ax1,sharey=ax1) ax4=fig.add_subplot(224,sharex=ax1,sharey=ax1)

    新式风格的代码直接利用pyplot.subplots()函数一次性创建:


xxxxxxxxxx
#新式风格的代码 fig,((ax1,ax2),(ax3,ax4))=plt.subplots(2,2,sharex=True,sharey=True) ax1.plot(...) ax2.plot(...) ...

它创建了Figure和对应所有网格SubPlot。你也可以不去解包而直接:


xxxxxxxxxx
#新式风格的代码 fig,axs=plt.subplots(2,2,sharex=True,sharey=True) ax1=axs[0,0] ax2=axs[0,1] ax3=axs[1,0] ax4=axs[1,1] ... ...

返回的axs是一个nrows*ncolsarray,支持numpy的索引。

3. 调整日期显示

  1. x轴为时间日期时,有可能间隔太密集导致显示都叠加在一起。此时可以用matplotlib.figure.Figure.autofmt_xdate()函数来自动调整X轴日期的显式。

    你也可以调整X轴的显示格式。当X轴为时间时,其显示由Axes.fmt_xdata属性来提供。该属性是一个函数对象或者函数,接受一个日期参数,返回该日期的显示字符串。matplotlib已经提供了许多date formatter,你可以直接使用ax.fmt_xdata=matplotlib.dates.DateFormatter('%Y-%m-%d')

    日期显示

4. 放置 text box

  1. 当你在Axes中放置text box时,你最好将它放置在axes coordinates下,这样当你调整X轴或者Y轴时,它能够自动调整位置。

    你也可以使用Text.bbox属性来让这个Text始终放在某个Patch中。其中.bbox是个字典,它存放的是该Patch实例的属性。

    text_box

5. LATEX文字

  1. 要想在文本中使用LATEX,你需要使用'$...$'这种字符串(即使用'$'作为界定符)。通常建议使用raw字符串,即r'$...$'的格式,因为原生字符串不会转义'\',从而使得大量的LATEX词法能够正确解析。

6. 平移坐标轴:

  1. Axes.spines是个字典,它存放了四个键,分别为: Axes.spines['left],Axes.spines['right],Axes.spines['top],Axes.spines['bottom] 他们都是一个matplotlib.spines.Spine对象,该对象继承自matplotlib.patches.Patch对象,主要是设置图形边界的边框。

    • Spine.set_color('none'):不显示这条边线

    • Spine.set_position((position)):将边线移动到指定坐标,其中position是一个二元元组,指定了 (position type,amount)position type可以是:

      • outward:在绘图区域之外放置边线,离开绘图区域的距离由 amount指定(负值则在会去区域内绘制)
      • axes:在 Axes coordinate内放置边线(从 0.0 到 1.0 )
      • data:在 data coordinate 内放置边线

      你也可以指定position为 : 'center',等价于 ('axes',0.5);或者 'zero',等价于 ('data',0.0) move_axis

7. 清除绘图

  1. 你可以通过 pyplot来清除绘图:

    • pyplot.cla():清除current axis。非当前axis不受影响
    • pyplot.clf():清除current figure。但是它不关闭window
    • pyplot.close():关闭window
  2. 你也可以通过面向对象的方法:

    • Figure.clf():清除该Figure对象的所有内容。

8. 清除X坐标和Y坐标:


xxxxxxxxxx
Axes.set_xticks(()) Axes.set_yticks(()) Axes.set_axis_off() #清除 tick 和边框

9. 设置中文

linux 下,为了支持中文,则在开头设置:


xxxxxxxxxx
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] #matplotlib 中文字体

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文