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

Grid 如何在matplotlib plot中的特定位置添加网格线?,grid,matplotlib,Grid,Matplotlib,如何在matplotlib绘图中y轴上的特定位置添加栅格 是的。这很简单。使用轴对象的设置[x | y]刻度方法,并按正常方式切换栅格: 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') a

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

是的。这很简单。使用
轴对象的
设置[x | y]刻度
方法,并按正常方式切换栅格:

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()

如果您只想输入一两行,您可以使用

ax.axhline(y, linestyle='--', color='k') # horizontal lines
ax.axvline(x, linestyle='--', color='k') # vertical lines

将线条样式和颜色(或线条/艺术家的所有其他属性)设置为您想要的值,以改进@tacaswell的答案,下面是一个使用
axhline
概念并将其调整为类似于线条网格的示例。在本例中,仅在x轴上使用起始默认网格,但也可以通过simpy add
ax.xaxis.grid(True)
向代码添加y轴上的网格(或仅在此轴上)

首先,只需在所需位置画一条线:

import matplotlib.pyplot as plt

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

plt.show()
获得以下结果

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

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()
我们得到这个,实际上等于一个线网格

如果我们还希望在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()
这导致:

哦,不!出现了一些近似值,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()
和TA-DAAA:)


太棒了,这正是我想要的:)@如果这个答案解决了你的问题,你应该接受它。这两个答案在不同的情况下都很有用(我使用了两种方法)