从 python 中的地块边界排除网格线?

Exclude grid lines from boundaries of plot in python?

我正在寻找一种方法来从绘图的轴上删除网格线,但不幸的是,我还没有找到解决这个问题的方法,也没有在其他任何地方找到它。

有没有办法在不依赖自动功能的情况下删除某些网格线或选择要绘制的网格线?

我已经编写了一个快速示例,输出了下面的说明图,很乐意为您提供任何帮助。

import matplotlib.pyplot as plt
import numpy as np

def linear(x, a, b):
    return a*x+b

x = np.linspace(0, 1, 20)
y = linear(x, a=1, b=2)

fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(10, 6))

ax.plot(x, y, color='darkred')
ax.set_xlim(0, 1)
ax.set_ylim(2, 3)
ax.grid(which='major', axis='y', linestyle='--', color='grey', linewidth=3)

plt.savefig("Testplot.pdf", format='pdf')

这是一个带有刻度线和水平线的命题。这个想法是指定刻度线(不是真的有必要,但为什么不呢),然后在你想要网格的地方画水平虚线。

import matplotlib.pyplot as plt
import numpy as np

def linear(x, a, b):
    return a*x+b

x = np.linspace(0, 1, 20)
y = linear(x, a=1, b=2)

fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(10, 6))

ax.plot(x, y, color='darkred')
ax.set_xlim(0, 1)
ax.set_ylim(2, 3)

yticks = np.arange(2, 3, 0.2)
grid_lines = np.arange(2.2, 3, 0.2)

ax.set_yticks(yticks)

for grid in grid_lines:
    ax.axhline(grid, linestyle='--', color='grey', linewidth=3)

输出:

为什么要包括 yticks?那么你可以设计一个函数来相应地输入 yticks 和 return 网格线的位置。我认为这可能很方便,具体取决于您的需要。祝你好运!

主要网格线出现在主要刻度的位置。您可以将任何单独的网格线设置为不可见。例如。关闭第五条网格线,

ax.yaxis.get_major_ticks()[5].gridline.set_visible(False)