python100天80用fillbetween填充曲线图
如下图我们通常会看到如下的有颜色的拆线图。
首先我们先定义两条拆线的X坐标,和两个Y坐标x = np.arange(1,23,2) y1 = np.array([2,3,6,5,10,10,12,14,18,20,20]) y1_err = np.array([0.6, 0.7, 0.5, 0.8, 0.5, 0.3, 0.2, 0.3, 0.6, 0.9, 0.7]) * 1.2 y2 = y1 + np.random.rand() * 4 y2_err = y1_err + np.random.rand()
np.arange(函数说明:,使用此函数生成x坐标x = np.arange(1,23,2) numpy.arange(start, stop, step, dtype)根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。
生成两个Y坐标y1 = np.array([2,3,6,5,10,10,12,14,18,20,20])y1_err = np.array([0.6, 0.7, 0.5, 0.8, 0.5, 0.3, 0.2, 0.3, 0.6, 0.9, 0.7]) * 1.2y2 = y1 + np.random.rand() * 4y2_err = y1_err + np.random.rand(
那么要在两条拆线之间填充颜色
画第一条拆线ax.plot(x, y1, marker="o") ax.fill_between(x, y1+y1_err, y1-y1_err, alpha=0.15)
画第二条拆线ax.plot(x, y2, marker="o") ax.fill_between(x, y2+y2_err, y2-y2_err, alpha=0.15)最后画此图的完整代码
def main(): def main(): x = np.arange(1,23,2) y1 = np.array([2,3,6,5,10,10,12,14,18,20,20]) y1_err = np.array([0.6, 0.7, 0.5, 0.8, 0.5, 0.3, 0.2, 0.3, 0.6, 0.9, 0.7]) * 1.2 y2 = y1 + np.random.rand() * 4 y2_err = y1_err + np.random.rand() fig = plt.figure(figsize=(10,5)) plt.rcParams["font.size"] = 18 ax = plt.subplot(111) ax.plot(x, y1, marker="o") ax.fill_between(x, y1+y1_err, y1-y1_err, alpha=0.15) ax.plot(x, y2, marker="o") ax.fill_between(x, y2+y2_err, y2-y2_err, alpha=0.15) ax.set_xlim(0, 24) ax.set_ylim(0, 25) ax.minorticks_on() #補助メモリの描写 ax.tick_params(axis="both", which="major",direction="in",length=5,width=2,top="on",right="on") ax.tick_params(axis="both", which="minor",direction="in",length=2,width=1,top="on",right="on") ax.set_title("Errorbar") ax.set_xlabel("X-axis") ax.set_ylabel("Y-axis") ax.grid() plt.show() if __name__ == "__main__": main()