数据分析之——用matplotlib绘制基本线图,fill_between讲解

慕课网学来的,记下以备后用 

#encoding=utf-8
import numpy as np

def main():
    # line
    import matplotlib.pyplot as plt
    x = np.linspace(-np.pi, np.pi, 256, endpoint=True) # -pi和pi之间取256个点,并包含最后一个点
    c, s = np.cos(x), np.sin(x)
    plt.figure(1) # 绘制第一个图
    plt.plot(x, c, color="blue", linewidth=1.0, linestyle='-', label="COS", alpha=0.5)
    plt.plot(x, s, "r*", label="SIN") # r:red, *: 线型
    plt.title("Cos & Sin")

    # 现在显示四周都有边框,如何只显示两条坐标轴呢,需要除去两边边框
    ax = plt.gca() # 轴的编辑器 #spines表示四周的线
    ax.spines["right"].set_color("none") # 去掉右外框
    ax.spines["top"].set_color("none")  # 去掉上外框
    ax.spines["left"].set_position(("data", 0)) # 设置左边线位置
    ax.spines["bottom"].set_position(("data", 0))
    ax.xaxis.set_ticks_position("bottom") # 编辑轴上数字,坐标轴的数字显示在横轴下面和纵轴左面
    ax.yaxis.set_ticks_position("left") # 编辑轴上数字
    # 设置横轴,两个数组,第一个指定横轴标识的位置,第二个为内容
    plt.xticks([-np.pi, -np.pi / 2.0, np.pi / 2.0, np.pi],
               [r'$-\pi$', r'$-\pi/2$', r'$+\pi/2$', r'$+\pi$'])
    plt.yticks(np.linspace(-1, 1, 5, endpoint=True)) # 直接给y轴标数字即可
    for label in ax.get_xticklabels() + ax.get_yticklabels(): # 设置坐标轴数字显示大小和颜色
        label.set_fontsize(16)
        # 设置label的小方块及其背景 face: 背景色,edge: 边缘,alpha:透明度
        label.set_bbox(dict(facecolor="purple", edgecolor="None", alpha=0.2))
    plt.legend(loc="upper left") # 图例说明,loc指定位置
    plt.grid() # 网格线
    # plt.axis([-1, 1, -0.5, 1]) # [-1, 1] 横轴显示范围,[-0.5,1] 纵轴显示范围
    plt.fill_between(x, np.abs(x)<0.5, c, c>0.5, color="green", alpha=0.25) # 填充两条线间的颜色
    t = 1
    plt.plot([t, t], [0, np.cos(t)], 'y', linewidth=3, linestyle='--') # 加注释
    plt.annotate("cos(1)", xy=(t, np.cos(1)), xycoords="data", xytext=(+10, +30),
        textcoords="offset points", arrowprops=dict(arrowstyle="->", connectionstyle="arc3, rad=0.2"))
    # xy为加的点的位置, xytext加偏移量,textcoords指定是一个相对位置,connectionstyle指定弧度为0.2
    plt.show()

if __name__ == "__main__":
    main()

fill_between() 填充两条线间区域
plt.fill_between(x, y1, y2=0, where=None,
    interpolate=False, step=None, hold=None, data=None, **kwargs)
x - array( length N) 定义曲线的 x 坐标
y1 - array( length N ) or scalar 定义第一条曲线的 y 坐标
y2 - array( length N )  or scalar 定义第二条曲线的 y 坐标
where - array of bool (length N), optional, default: None 


我的理解:从y1到y2的水平区域被填充

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值