matplotlib技巧---9.共享坐标轴、创建多个subplot、调整横坐标、放置文本框、latext文字、平移坐标轴、清除绘图、清除坐标轴、设置中文

1. 共享坐标轴

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

举例:

2. 创建多个 subplot

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

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

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

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

3. 调整横坐标不重叠

未调整前:

(1)matplotlib.dates.DateFormatter

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

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

(2)plt.xticks(rotation=顺时针旋转角度)

(3)ax.set_xticklabels(rotation=顺时针旋转角度)

4. 放置 text box

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

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

语法:

1
ax.text(x, y, s, fontdict=None, withdash=False, **kwargs)

功能:将文本s添加到数据坐标中位置x,y的轴上。

参数:

  1. x,y:张量,放置文本的位置。 默认情况下,这是在数据坐标中。 可以使用变换参数来更改坐标系。
  2. s:文本
  3. fontdict:字典,可选,覆盖默认文本属性的字典。 如果fontdict为None,则默认值由rc参数确定。
  4. withdash:布尔值,可选,默认值:False。创建一个〜matplotlib.text.TextWithDash实例,而不是一个〜matplotlib.text.Text实例。

你可以使用对齐参数horizontalalignmentverticalalignmentmultialignment来布置文本。
  1. horizontalalignment控制文本的x位置参数表示文本边界框的左边,中间或右边。
  2. verticalalignment控制文本的y位置参数表示文本边界框的底部,中心或顶部。
  3. multialignment,仅对于换行符分隔的字符串,控制不同的行是左,中还是右对齐。
这里是一个使用text()命令显示各种对齐方式的例子。 在整个代码中使用transform = ax.transAxes,表示坐标相对于轴边界框给出,其中0,0是轴的左下角,1,1是右上角。

举例:

5. LATEX文字

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

举例:

6. 平移坐标轴

Axes.spines是个字典,它存放了四个键,分别为: 

  1. Axes.spines['left'],
  2. Axes.spines['right'],
  3. Axes.spines['top'],
  4. Axes.spines['bottom'] 

他们都是一个matplotlib.spines.Spine对象,该对象继承自matplotlib.patches.Patch对象,主要是设置图形边界的边框。

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

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

    1. outward在绘图区域之外放置边线,离开绘图区域的距离由 amount指定(负值则在会去区域内绘制)
    2. axesAxes coordinate内放置边线(从 0.0 到 1.0 )
    3. datadata coordinate 内放置边线

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

举例:

7. 清除绘图

(1)通过pyplot清除绘图

  1. pyplot.cla()清除current axis。非当前axis不受影响
  2. pyplot.clf()清除current figure。但是它不关闭window
  3. pyplot.close()关闭window

(2)通过面向对象的方法

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

8. 清除X坐标和Y坐标

9. 设置中文

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

  

 

参考文献:

【1】matplotlib的基本用法(三)——调整坐标轴_SnailTyan-CSDN博客

【2】huaxiaozhuan大佬博客

posted @   nxf_rabbit75  阅读(11065)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
1. 共享坐标轴2. 创建多个 subplot3. 调整横坐标不重叠(1)matplotlib.dates.DateFormatter(2)plt.xticks(rotation=顺时针旋转角度)(3)ax.set_xticklabels(rotation=顺时针旋转角度)4. 放置 text box5. LATEX文字6. 平移坐标轴7. 清除绘图(1)通过pyplot清除绘图(2)通过面向对象的方法8. 清除X坐标和Y坐标9. 设置中文
点击右上角即可分享
微信分享提示