Matplotlib

一.概述

pycharm安装 包:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple API名

        主要用于开发2D图表(3D也可一做)
        数据分析,基于分析,进行展示

2.绘图流程

       1>创建画布
        2>绘制图像
        3>显示图像

#1.创建画布
 plt.figure(fisize=(20,8),dpi=100);
// fisize 控制画布大小 dpi:像素清晰度

#2.绘制图像
x=[1,2,3]
y=[4,5,6]
plt.plot(x,y)

#3.显示图像
plt.show()

 

二.折线图(plot)与基础绘图功能
    1.图像保存
        plt.savefig(path) //需要图像展
        注意:图像保存一定要放到show(图像展示)前面,因为plt.show()会释放figure资源,如果在显示图像之后保存图片只能保存空图片
    2.添加x轴,y轴刻度
        plt.xticks
        plt.yticks
        注意:第一个参数必须是数字,如果不是数字,需要进行值替换
    3.添加网格
        plt.grid()
            参数:
            True :表示显示网格
            linestyle -- 绘制网格的方式 一般0.5 0.7
            alpha -- 透明度
    4.添加描述信息
        plt.xlabel("时间")
        plt.ylabel("温度")
        plt.title("一小时温度变化图", fontsize=20)
    5.多次plot
      直接进行绘制
         里面的color可以指定颜色

python matyplotlib如何保存高质量的图片 matplotlib保存图片,清晰度_随机数

python matyplotlib如何保存高质量的图片 matplotlib保存图片,清晰度_python_02


    6.显示图例

      plt.legend()

        注意:多次绘图需要在显示之前,声明plot里面lable的具体值

        如果指在plt.plot()中设置label还不能最终显示出图例,还需要用plt.legend()将图例显示出来

        里面的loc 参数可以用来控制多个图例的位置 一般loc都设置为"best" 或0,用来显示 Label标记名字的

       图例分别代表哪个图

    7.多个坐标系图像显示
        fig, axes = plt.subplots()
            nrows -- 几行
            ncols -- 几列
            注意:有些方法需要添加set_*
    8.折线图应用场景
        1.表示数据变化
        2.绘制一些数学图像

    9.案例:

 1>天气变化图显示在两张图上

def weatherShow_Two():
        # //生成数据
        x = range(60)
        y_beijing = [random.uniform(10, 15) for i in x]
        y_shanghai = [random.uniform(15, 25) for i in x]

        # random.uniform用法
        # x:随机数的最小值,包含该值
        # y:随机数的最大值,不包含该值
        # 返回值:浮点数N,x<=N<=y

        # 1.生成画布
        # plt.figure(figsize=(20, 8), dpi=100)
        fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)

        # 2.图形绘制
        axes[0].plot(x, y_beijing, color="g", linestyle="-.", label="北京")
        axes[1].plot(x, y_shanghai, label="上海")
        # 2.1添加x,y轴刻度
        y_ticks = range(60)
        # format用于字符拼接,format里的东西显示到前面的大括号里 也可以  {}11点{}分".format("dsad",i)
        x_ticks_label = ["11点{}分".format(i) for i in x]

        # y轴从头到尾每隔5个且一个
        # plt.yticks(y_ticks[::5])
        # plt.xticks(x[::5], x_ticks_label[::5])
        # # plt.xticks(x_ticks_label[::5])// 必须最开始传进去的为数字 这种方式是错的,如果不是数字需要进行值替换
        axes[0].set_xticks(x[::5])
        axes[0].set_yticks(y_ticks[::5])
        axes[0].set_xticklabels(x_ticks_label[::5])

        axes[1].set_xticks(x[::5])
        axes[1].set_yticks(y_ticks[::5])
        axes[1].set_xticklabels(x_ticks_label[::5])

        # 2.2添加网格
        axes[0].grid(True, linestyle='--', alpha=1.0)
        axes[1].grid(True, linestyle='--', alpha=1.0)

        # 2.3添加描述
        axes[0].set_xlabel("时间")
        axes[0].set_ylabel("温度")
        axes[0].set_title("一小时温度变化图", fontsize=20)

        axes[1].set_xlabel("时间")
        axes[1].set_ylabel("温度")
        axes[1].set_title("一小时温度变化图", fontsize=20)

        # 2.4显示图例
        axes[0].legend(loc=0);
        axes[1].legend(loc=0);

        plt.show()

2> 天气变化图显示在一张图上

def weatherShow_One():
        # //生成数据
        x=range(60)
        y_beijing=[random.uniform(10,15) for i in x]
        y_shanghai = [random.uniform(15, 25) for i in x]

        #random.uniform用法
        # x:随机数的最小值,包含该值
        # y:随机数的最大值,不包含该值
        # 返回值:浮点数N,x<=N<=y

        #1.生成画布
        plt.figure(figsize=(20,8),dpi=100)

        #2.图形绘制
        plt.plot(x,y_beijing,color="g",linestyle="-.",label="北京")
        plt.plot(x, y_shanghai,label="上海")
        #2.1添加x,y轴刻度
        y_ticks=range(60)
        # format用于字符拼接,format里的东西显示到前面的大括号里 也可以  {}11点{}分".format("dsad",i)
        x_ticks_label=["11点{}分".format(i) for i in x]

        # y轴从头到尾每隔5个且一个
        plt.yticks(y_ticks[::5])
        plt.xticks(x[::5],x_ticks_label[::5])
        # plt.xticks(x_ticks_label[::5])// 必须最开始传进去的为数字 这种方式是错的,如果不是数字需要进行值替换


       #2.2添加网格
        plt.grid(True,linestyle='--',alpha=1.0)

       #2.3添加描述
        plt.xlabel("时间")
        plt.ylabel("温度")
        plt.title("一小时温度变化图",fontsize=20)

       #2.4显示图例
        plt.legend("best");

        plt.show()

 

三.常见图形绘制
    1.折线图 -- plt.plot
        变化
    2.散点图 -- plt.scatter()
        分布规律
    3.柱状图 -- plt.bar
        统计、对比
    4.直方图 -- plt.hist()
        统计,分布
    5.饼图 -- plt.pie()
        占比

其余步骤都跟折线图的方式一样 只是绘图这一步骤变了,等用到时在查具体的参数即可

# plt.xticks(x[::5], x_ticks_label[::5])
           # # plt.xticks(x_ticks_label[::5])// 必须最开始传进去的为数字 这种方式是错的,如果不是数字需要进行值替换
          x[::5] 和x_ticks_label[::5]的数据需一样才能替换 绘制每种图形,想要用汉字显示,都需要先声明与汉字对应大小的数组以便能够替换