Python 在主网格线下方绘制辅助网格线
我正在尝试使用matplotlib绘制网格。网格的顺序应位于绘图中所有其他线的后面。到目前为止,我的问题是 次要网格线始终绘制在主要网格线之前,即Python 在主网格线下方绘制辅助网格线,python,matplotlib,Python,Matplotlib,我正在尝试使用matplotlib绘制网格。网格的顺序应位于绘图中所有其他线的后面。到目前为止,我的问题是 次要网格线始终绘制在主要网格线之前,即 import matplotlib.pyplot as plt import numpy as np from matplotlib.ticker import MultipleLocator, FormatStrFormatter plt.rc('text', usetex=True) plt.rc('font', family='serif')
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
f = plt.figure(figsize=(4,4))
ax = f.add_subplot(111)
ax.xaxis.set_minor_locator(MultipleLocator(1))
ax.xaxis.set_major_locator(MultipleLocator(10))
ax.yaxis.set_minor_locator(MultipleLocator(1))
ax.yaxis.set_major_locator(MultipleLocator(10))
majc ="#3182bd"
minc ="#deebf7"
ax.xaxis.grid(True,'minor',color=minc, ls='-', lw=0.2)
ax.yaxis.grid(True,'minor',color=minc, ls='-', lw=0.2)
ax.xaxis.grid(True,'major',color=majc, ls='-')
ax.yaxis.grid(True,'major',color=majc,ls ='-')
ax.set_axisbelow(True)
x = np.linspace(0, 30, 100)
ax.plot(x, x, 'r-', lw=0.7)
[line.set_zorder(3) for line in ax.lines]
plt.savefig('test.pdf')
有什么建议吗?多谢各位
编辑:特写示例
更具体地说,它看起来像是按照那个顺序绘制垂直主视图、垂直副视图、水平主视图、水平副视图和绘制线。可能对matplotlib基础知识有相当深入的了解 对于您正在使用的颜色,您可以通过alpha(而不是RGB)来区分大调和小调。更改示例的两行:
ax.xaxis.grid(True,'minor',color=majc, alpha=0.2, ls='-', lw=0.2)
ax.yaxis.grid(True,'minor',color=majc, alpha=0.2, ls='-', lw=0.2)
结果:
这种方法的问题在于pdf不支持透明度,或者我错了?您回复的thx已保存为pdf,这就是我得到的结果(实际上只更改了我显示的两行)。如果pdf不能处理透明度,“展平”算法可以正确处理颜色。看起来你是对的。我认为您的回答是一个很好的解决方法,但是如果知道maplotlib api中出现了什么问题以及如何修复它,那就太好了;ax.xaxis.grid的docstring表示“kwargs用于设置网格的线属性”,但我无法使用我尝试过的任何一组zorder值在顶部/第二秒绘制垂直网格线。