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

时间:2013-01-30 16:09:34

标签: grid matplotlib

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

3 个答案:

答案 0 :(得分:58)

是。这很简单。使用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()

Custom tick locations

答案 1 :(得分:40)

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

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

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

答案 2 :(得分:0)

为提高@tacaswell的答案,以下是使用axhline概念并将其调整为类似于线网格的示例。在此示例中,仅在x轴上使用了默认的起始网格,但也可以通过在代码中simpy添加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()

获得以下结果

grid1

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

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

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

grid2

如果是的话,我们还想在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()

导致:

grid3

哦,不!出现了一些近似值,标号为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:)

grid4