1. 什么是Matplotlib ?

    Matplotlib 是一个 Python 的数据可视化库,用于创建静态、交互式和动态的图表和可视化效果。
    它可以绘制各种类型的图表,包括线图、散点图、柱状图、饼图、直方图等,以及各种复杂的图形和图像


2. 如何使用Matplotlib ?

    #1. 画出温度变化图
        import matplotlib.pyplot as plt
        import random
        
        #设置显示中文字体
        from pylab import mpl
        # 设置显示中文字体
        mpl.rcParams["font.sans-serif"] = ["SimHei"]
        # 设置正常显示符号
        mpl.rcParams["axes.unicode_minus"]= False

        # 0. 准备x,y坐标的数量
        x = range(60)
        y_shanghai = [random.uniform(15,18) for i in x]
        
        #1. 设置图形的尺寸为宽度20英寸,高度8英寸,并且设置图形的分辨率为80 dots per inch(每英寸80个像素)
        plt.figure(figsize=(30,10),dpi=80)
        
        #2. 绘制折线图
        plt.plot(x, y_shanghai)
        
        #3. 显示图像
        plt.show()


   
    #2. 添加网格显示,标题,描述信息
        import matplotlib.pyplot as plt
        import random
        
        #设置显示中文字体
        from pylab import mpl
        # 设置显示中文字体
        mpl.rcParams["font.sans-serif"] = ["SimHei"]
        # 设置正常显示符号
        mpl.rcParams["axes.unicode_minus"]= False

        
        # 0. 准备x,y坐标的数量
        x = range(60)
        y_shanghai = [random.uniform(15,18) for i in x]
        
        
        # 1. 设置图形的尺寸为宽度20英寸,高度8英寸,并且设置图形的分辨率为100 dots per inch(每英寸80个像素)
        plt.figure(figsize=(20,8), dpi=100)
        
        # 2. 绘制折线图
        plt.plot(x, y_shanghai)
        
        # 3. 添加x,y刻度
        x_ticks_label = [f'11点{i}分' for i in x]
        y_ticks = range(40)
        
        # 4. 修改x,y轴坐标刻度显示
        plt.xticks(x[::5], x_ticks_label[::5])
        plt.yticks(y_ticks[::5])
        
        # 5. True:表示开启网格线,linestyle="--":表示网格线的样式为虚线,alpha=1:表示网格线的透明度为1,即完全不透明
        plt.grid(True, linestyle="--", alpha=1)
        
        # 6. 添加描述信息
        plt.xlabel("时间")
        plt.ylabel("温度")
        plt.title("中午11点~12点某城市温度变化", fontsize=20)
        
        # 7. 图像保存
        plt.savefig("test.png")
        
        # 8. 显示图像
        plt.show()


   
    #3. 在一个坐标系中绘制多个图像 
        import matplotlib.pyplot as plt
        import random
        
        #设置显示中文字体
        from pylab import mpl
        # 设置显示中文字体
        mpl.rcParams["font.sans-serif"] = ["SimHei"]
        # 设置正常显示符号
        mpl.rcParams["axes.unicode_minus"]= False

        # 0. 准备x,y坐标的数量
        x = range(60)
        print(x)
        y_shanghai = [random.uniform(15,18) for i in x]
        y_beijing = [random.uniform(1,3) for i in x]

        # 1. 设置图形的尺寸为宽度20英寸,高度8英寸,并且设置图形的分辨率为100 dots per inch(每英寸80个像素)
        plt.figure(figsize=(20,8),dpi=100)


        # 2. 绘制折线图
        plt.plot(x,y_shanghai,label='上海')
        plt.plot(x,y_beijing,color='r',linestyle='--',label='北京')

            # # 颜色字符 
                # r 红色      
                # g 绿色     
                # b 蓝色      
                # w 白色      
                # c 青色     
                # m 洋红
                # y 黄色
                # k 黑色

            # # 风格字符
                # - 实线
                # - - 虚线
                # -. 点划线
                # : 点虚线
                # ' ' 留空、空格

        # 3. 添加x,y刻度
        x_ticks_label = [f'11点{i}分' for i in x]
        y_ticks = range(40)

        # 4. 修改x,y轴坐标刻度显示
        plt.xticks(x[::5],x_ticks_label[::5])
        plt.yticks(y_ticks[::5])

        # 5. 添加网格显示
        plt.grid(True,linestyle="--",alpha=1)

        # 6. 添加描述信息
        plt.xlabel("时间")
        plt.ylabel("温度")
        plt.title("中午11点~12点某城市温度变化",fontsize=20)

        # 7. 图像保存
        plt.savefig("test.png")

        # 8. 显示图例
        plt.legend(loc='best')

          # 'best'
          # 'upper right'
          # 'upper left'
          # 'lower left'
          # 'lower right'
          # 'right'
          # 'center left'
          # 'center right'
          # 'lower center'
          # 'upper center'
          # 'center'

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


   
    #4. 多个坐标系中绘制多个图像
        import matplotlib.pyplot as plt
        import random
        
        #设置显示中文字体
        from pylab import mpl
        # 设置显示中文字体
        mpl.rcParams["font.sans-serif"] = ["SimHei"]
        # 设置正常显示符号
        mpl.rcParams["axes.unicode_minus"]= False

        # 0. 准备x,y坐标的数量
        x = range(60)
        print(x)
        y_shanghai = [random.uniform(15,18) for i in x]
        y_beijing = [random.uniform(1,3) for i in x]
        
        # 1. 设置图形的尺寸为宽度20英寸,高度8英寸,并且设置图形的分辨率为100 dots per inch(每英寸80个像素)
        plt.figure(figsize=(20,8),dpi=100)
        fig, axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
    
    
        # 2. 绘制折线图
        plt.plot(x,y_shanghai,label='上海')
        plt.plot(x,y_beijing,color='r',linestyle='--',label='北京')
        axes[0].plot(x,y_shanghai,label='上海')
        axes[1].plot(x,y_beijing,color='r',linestyle='--',label='北京')
    
            # # 颜色字符 
                # r 红色      
                # g 绿色     
                # b 蓝色      
                # w 白色      
                # c 青色     
                # m 洋红
                # y 黄色
                # k 黑色

            # # 风格字符
                # - 实线
                # - - 虚线
                # -. 点划线
                # : 点虚线
                # ' ' 留空、空格
    
        # 3. 添加x,y刻度
        x_ticks_label = [f'11点{i}分' for i in x]
        y_ticks = range(40)
    
        # 4. 修改x,y轴坐标刻度显示
        plt.xticks(x[::5],x_ticks_label[::5])
        plt.yticks(y_ticks[::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])
    
    
        # 5. 添加网格显示
        axes[0].grid(True,linestyle="--",alpha=1)
        axes[1].grid(True,linestyle="--",alpha=1)
    
        # 6. 添加描述信息
        axes[0].set_xlabel("时间")
        axes[0].set_ylabel("温度")
        axes[0].set_title("中午11点~12点某城市温度变化",fontsize=20)
        axes[1].set_xlabel("时间")
        axes[1].set_ylabel("温度")
        axes[1].set_title("中午11点~12点某城市温度变化",fontsize=20)
    
    
        # 7. 图像保存
        plt.savefig("test.png")
    
        # 8. 显示图例
        axes[0].legend(loc='best')
        axes[1].legend(loc='best')

          # 'best'
          # 'upper right'
          # 'upper left'
          # 'lower left'
          # 'lower right'
          # 'right'
          # 'center left'
          # 'center right'
          # 'lower center'
          # 'upper center'
          # 'center'
    
        # 8. 显示图像
        plt.show()


   
    #5. 折线图应用举例
        import matplotlib.pyplot as plt
        import random
        import numpy as np
        
        #设置显示中文字体
        from pylab import mpl
        # 设置显示中文字体
        mpl.rcParams["font.sans-serif"] = ["SimHei"]
        # 设置正常显示符号
        mpl.rcParams["axes.unicode_minus"]= False

        # 0.准备数据
        x = np.linspace(-10, 10, 1000)
        y = np.sin(x)

        # 1.设置图形的尺寸为宽度20英寸,高度8英寸,并且设置图形的分辨率为100 dots per inch(每英寸80个像素)
        plt.figure(figsize=(20, 8), dpi=100)

        # 2.绘制函数图像
        plt.plot(x, y)

        # 3 添加网格显示
        plt.grid()

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



   
    #6. 散点图绘制 
        import matplotlib.pyplot as plt
        import random
        import numpy as np
        
        #设置显示中文字体
        from pylab import mpl
        # 设置显示中文字体
        mpl.rcParams["font.sans-serif"] = ["SimHei"]
        # 设置正常显示符号
        mpl.rcParams["axes.unicode_minus"]= False
        
        # 0.准备数据
        x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01,  20.67, 288.64,
              163.56, 120.06, 207.83, 342.75, 147.9 ,  53.06, 224.72,  29.51,
                21.61, 483.21, 245.25, 399.25, 343.35]
        y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61,  24.9 , 239.34,
              140.32, 104.15, 176.84, 288.23, 128.79,  49.64, 191.74,  33.1 ,
                30.74, 400.02, 205.35, 330.64, 283.45]
        
        # 1.设置图形的尺寸为宽度20英寸,高度8英寸,并且设置图形的分辨率为100 dots per inch(每英寸80个像素)
        plt.figure(figsize=(20, 8), dpi=100)
        
        # 2.绘制散点图
        plt.scatter(x, y)
        
        # 3.显示图像
        plt.show()


   
    #7. 绘制柱状图
        import matplotlib.pyplot as plt
        import random
        import numpy as np
        
        #设置显示中文字体
        from pylab import mpl
        # 设置显示中文字体
        mpl.rcParams["font.sans-serif"] = ["SimHei"]
        # 设置正常显示符号
        mpl.rcParams["axes.unicode_minus"]= False
      
        random_movies = ['星际穿越', '阿凡达', '泰坦尼克号', '盗梦空间', '指环王', '哈利波特', '阿甘正传', '霸王别姬', '肖申克的救赎', '三傻大闹宝莱坞','其它']
        # 横坐标
        x = range(len(movie_name))

        # 票房数据
        y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]

        # 1.设置图形的尺寸为宽度20英寸,高度8英寸,并且设置图形的分辨率为100 dots per inch(每英寸80个像素)
        plt.figure(figsize=(20, 8), dpi=100)

        # 2.绘制柱状图
        plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g','b'])
        # 2.1b修改x轴的刻度显示
        plt.xticks(x, movie_name)

        # 2.2 添加网格显示
        plt.grid(linestyle="--", alpha=0.5)

        # 2.3 添加标题
        plt.title("电影票房收入对比")
        
        # 3.显示图像
        plt.show()


    
    Matplotlib官方参考: https://matplotlib.org/index.html
    
总结

    
  Matplotlib 是一个非常强大的 Python 绘图库,它提供了一整套用于创建静态、动态和交互式可视化的工具,通过掌握这些技巧,可以更好地满足数据可视化需求