使用子批次更新了MRE

  • 我不确定原始问题和MRE是否有用.对于较大的x和y标签,边距填充似乎进行了适当调整.
  • 该问题可通过子批次重现.
  • 使用matplotlib 3.4.2
fig, axes = plt.subplots(ncols=2, nrows=2, figsize=(8, 6))
axes = axes.flatten()

for ax in axes:
    ax.set_ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
    ax.set_xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$')

plt.show()

enter image description here

原创

我用matplotlib绘制了一个数据集,其中有一个非常"高"的xlabel(这是一个用TeX表示的公式,包含一个分数,因此高度相当于几行文本).

在任何情况下,当我画数字时,公式的底部总是被切断.改变图形大小似乎对此没有帮助,而且我还不知道如何将x轴"向上"移动以为xlabel腾出空间.这样做是一个合理的临时解决方案,但最好能让matplotlib自动识别标签被切断并相应调整大小.

这里有一个例子说明了我的意思:

import matplotlib.pyplot as plt

plt.figure()
plt.ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
plt.xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$', fontsize=50)
plt.title('Example with matplotlib 3.4.2\nMRE no longer an issue')
plt.show()

enter image description here

整个ylabel是可见的,但是xlabel在底部被切断.

在这种情况下,这是一个特定于计算机的问题,我使用matplotlib 1.0.0在OSX 10.6.8上运行此程序

推荐答案

使用:

import matplotlib.pyplot as plt

plt.gcf().subplots_adjust(bottom=0.15)

# alternate option without .gcf
plt.subplots_adjust(bottom=0.15)

为标签腾出空间,其中plt.gcf()表示get the current figure.plt.gca()的电流为Axes,也可以使用.

编辑:

自从我给出答案后,matplotlib增加了100功能.

See matplotlib Tutorials: Tight Layout Guide

所以我建议使用它:

fig, axes = plt.subplots(ncols=2, nrows=2, figsize=(8, 6))
axes = axes.flatten()

for ax in axes:
    ax.set_ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
    ax.set_xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$')

plt.tight_layout()
plt.show()

enter image description here

Python相关问答推荐

Matplotlib轮廓线值似乎不对劲

如何在PIL、Python中对图像应用彩色面膜?

具有症状的分段函数:如何仅针对某些输入值定义函数?

跟踪我已从数组中 Select 的样本的最有效方法

如何使用symy打印方程?

max_of_three使用First_select、second_select、

Pytest两个具有无限循环和await命令的Deliverc函数

处理(潜在)不断增长的任务队列的并行/并行方法

使用索引列表列表对列进行切片并获取行方向的向量长度

将输入管道传输到正在运行的Python脚本中

Pre—Commit MyPy无法禁用非错误消息

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?

使用特定值作为引用替换数据框行上的值

Python—压缩叶 map html作为邮箱附件并通过sendgrid发送

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

根据Pandas中带条件的两个列的值创建新列

在电影中向西北方向对齐""

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?  

Pandas:将值从一列移动到适当的列

启动线程时,Python键盘模块冻结/不工作