问题描述
请看下面的图片:
在左侧创建图表的代码为:
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0,2.0,0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t,s)
plt.grid(axis='y')
plt.savefig("test_transparent.png",transparent=True)
plt.show()
如何更改网格背景颜色以创建类似于右侧的图表?
因此,基本上,我必须删除X轴并为水平行设置备用背景颜色。
我想在不设置Y轴步长(0、0.25、0.50等)的情况下创建这些有色区域,matplotlib正在使用。 MatplotLib自动设置它们,对我来说还可以,我只需要替换颜色即可。
谢谢
解决方法
您可以提取ytick列表并为其创建水平跨度。
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0,2.0,0.01)
s = 1 + np.sin(2 * np.pi * t)
plt.plot(t,s)
plt.grid(axis='y')
yticks,_ = plt.yticks()
for y0,y1 in zip(yticks[::2],yticks[1::2]):
plt.axhspan(y0,y1,color='black',alpha=0.1,zorder=0)
plt.yticks(yticks) # force the same yticks again
plt.show()