如何在matplotlib图中的特定位置添加网格线?

UNa*_*amy 40 grid matplotlib

如何在matplotlib图中的y轴上的特定位置添加网格?

Pau*_*l H 63

是.这很简单.使用对象的set_[x|y]ticks方法axes并正常切换网格:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set_yticks([0.2, 0.6, 0.8], minor=False)
ax.set_yticks([0.3, 0.55, 0.7], minor=True)
ax.yaxis.grid(True, which='major')
ax.yaxis.grid(True, which='minor')
plt.show()
Run Code Online (Sandbox Code Playgroud)

自定义刻度位置


tac*_*ell 45

如果您只想放一两行就可以使用

ax.axhline(y, linestyle='--', color='k') # horizontal lines
ax.axvline(x, linestyle='--', color='k') # vertical lines
Run Code Online (Sandbox Code Playgroud)

线条样式和颜色(或所有其余的线条/艺术家属性)设置为您想要的


Ael*_*ius 9

为了改进@tacaswell的答案,这里有一个使用网格概念axhline并将其调整为看起来类似于线网格的示例。在此示例中,仅在 x 轴上使用了起始默认网格,但也可以通过简单添加到代码来在 y 轴上(或仅在此轴上)添加网格ax.xaxis.grid(True)

第一个简单地开始在所需位置画一条线:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.xaxis.grid(True)
ynew = 0.3
ax.axhline(ynew)

plt.show()
Run Code Online (Sandbox Code Playgroud)

得到以下结果

网格1

这与线网格不太相似。
通过更改颜色和线宽,如下所示:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.xaxis.grid(True)
ynew = 0.3
ax.axhline(ynew, color='gray', linewidth=0.5)

plt.show()
Run Code Online (Sandbox Code Playgroud)

我们得到了这个,现在实际上等于线网格。

网格2

如果我们还想在 y 轴上新行所在的位置添加一个勾号和相关标签:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.xaxis.grid(True)
ynew = 0.3
ax.axhline(ynew, color='gray', linewidth=0.5)

yt = ax.get_yticks()
yt=np.append(yt,ynew)

ax.set_yticks(yt)
ax.set_yticklabels(yt)

plt.show()
Run Code Online (Sandbox Code Playgroud)

这导致:

网格3

不好了!发生了一些近似,0.6 处的标签并不完全代表数字 0.6。别担心,我们可以简单地通过舍入标签数组来解决这个问题,如下所示:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.xaxis.grid(True)
ynew = 0.3
ax.axhline(ynew, color='gray', linewidth=0.5)

yt = ax.get_yticks()
yt=np.append(yt,ynew)

ax.set_yticks(yt)
ax.set_yticklabels(np.round(yt,1))

plt.show()
Run Code Online (Sandbox Code Playgroud)

和 TA-DAAA :)

网格4