matplotlib 如何在刻度线标签和坐标轴之间添加间距

ddrv8njm  于 2023-11-22  发布在  其他
关注(0)|答案(5)|浏览(128)

我已经成功地增加了ticklabels的字体,但是现在它们太靠近轴了。我想在ticklabels和轴之间添加一点呼吸空间。

ndh0cuux

ndh0cuux1#

如果你不想全局改变间距(通过编辑你的rcParams),并且想要一个更干净的方法,试试这个:
第一个月
或者仅仅是x轴
ax.tick_params(axis='x', which='major', pad=15)
或y轴
ax.tick_params(axis='y', which='major', pad=15)

f4t66c6m

f4t66c6m2#

看起来matplotlib将这些设置视为rcParams:

pylab.rcParams['xtick.major.pad']='8'
pylab.rcParams['ytick.major.pad']='8'

字符串
在你创建任何图形之前设置这些,你应该没问题。
我看过源代码,似乎没有任何其他方法可以通过编程来设置它们。(tick.set_pad()看起来它试图做正确的事情,但填充似乎是在构造Tick时设置的,之后无法更改。

b1uwtaje

b1uwtaje3#

这可以使用set_pad来完成,但是你必须重置标签。

for tick in ax.get_xaxis().get_major_ticks():
    tick.set_pad(8.)
    tick.label1 = tick._get_text1()

字符串

jpfvwuh4

jpfvwuh44#

  • 与许多规范问题一样,这个问题不是很具体,也没有可重复的例子,所以这里有一个关于图标签和标题的例子。
  • 其他答案对于axes图来说很好,但是对于figure还有其他选项,它们都可以通过指定x=y=参数来定位。
  • fig.suptitle
  • fig.supxlabel
  • fig.supylabel
  • 示例来自Figure labels: suptitle, supxlabel, supylabel
from matplotlib.cbook import get_sample_data
import matplotlib.pyplot as plt
import numpy as np

fig, axs = plt.subplots(3, 5, figsize=(8, 5), constrained_layout=True,
                        sharex=True, sharey=True)

fname = get_sample_data('percent_bachelors_degrees_women_usa.csv',
                        asfileobj=False)
gender_degree_data = np.genfromtxt(fname, delimiter=',', names=True)

majors = ['Health Professions', 'Public Administration', 'Education',
          'Psychology', 'Foreign Languages', 'English',
          'Art and Performance', 'Biology',
          'Agriculture', 'Business',
          'Math and Statistics', 'Architecture', 'Physical Sciences',
          'Computer Science', 'Engineering']

for nn, ax in enumerate(axs.flat):
    ax.set_xlim(1969.5, 2011.1)
    column = majors[nn]
    column_rec_name = column.replace('\n', '_').replace(' ', '_')

    line, = ax.plot('Year', column_rec_name, data=gender_degree_data, lw=2.5)
    ax.set_title(column, fontsize='small', loc='left', y=1.05)  # move the axes title
    ax.set_ylim([0, 100])
    ax.tick_params(axis='both', which='major', pad=15)  # move the tick labels
    ax.grid()

fig.supxlabel('Year', y=-0.15)  # with adjusted position
fig.supylabel('Percent Degrees Awarded To Women', x=-0.05)  # with adjusted position
fig.suptitle('Majors', y=1.15)  # with adjusted position

plt.show()

字符串


的数据

o3imoua4

o3imoua45#

在标记轴时,可以指定labelpad = n,以便在ticklabels和轴之间留出一些空间。

from matplotlib import pyplot as plt

plt.xlabel("X-axis Label", labelpad = 10)
plt.ylabel("Y-axis Label", labelpad = 10)

字符串

相关问题