如何在 matplotlib 图中 y 轴上的特定位置添加网格?
问问题
53046 次
3 回答
81
是的。这很简单。使用对象的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()
于 2013-01-30T18:16:22.313 回答
66
如果您只想输入一两行,您可以使用
ax.axhline(y, linestyle='--', color='k') # horizontal lines
ax.axvline(x, linestyle='--', color='k') # vertical lines
将线条样式和颜色(或所有其他线条/艺术家属性)设置为您想要的
于 2013-01-31T04:16:08.510 回答
5
为了改进@tacaswell 的答案,这里有一个示例,它使用了 的概念axhline
并对其进行了调整,使其看起来类似于线网格。ax.xaxis.grid(True)
在此示例中,它仅在 x 轴上使用了起始默认网格,但也可以通过 simpy add在代码中添加网格也在 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 :)
于 2020-02-14T14:44:56.997 回答