Python可视化之Matplotlit绘图库

  1. 线图

     

    1. import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      
      def draw_line():   
          df = pd.read_excel(r"D:\data\股价清单.xlsx")
          plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
          # SimHei 黑体, Kaiti 楷体, LiSu 隶书, FangSong 仿宋, YouYuan 幼圆, STSong 宋体
          plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
          plt.figure(figsize=(10,4)) #生成画布并设置画布尺寸
          plt.plot(range(15), df.loc[:,"收盘价"], '-*')  #共15个数据点,x轴需要15个刻度点
          plt.plot(range(15), df.loc[:,"开盘价"], '-o')  #共15个数据点,x轴需要15个刻度点
          plt.plot(range(15), df.loc[:,"最高价"], '-v')  #共15个数据点,x轴需要15个刻度点
          plt.plot(range(15), df.loc[:,"最低价"], '-^')  #共15个数据点,x轴需要15个刻度点
          plt.title('股价走势图') # 设置标题
          plt.xlabel('时间') # 设置x轴标签
          plt.ylabel('股价') # 设置y轴标签
          plt.xticks(range(15), df.index, rotation=30) # 设置刻度的标签,倾斜度
          plt.legend(['收盘价','开盘价','最高价','最低价']) # 设置图例
          plt.show() # 展示图形
      
      if __name__ == '__main__':
          draw_line()
    2. 绘制效果
  2. 饼图

     

    1. 代码
      import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      
      # 饼图的作用是展示分组数据在整体中的占比
      def draw_pie():
          np.random.seed(1) # 为保证代码每次运行都能得到相同的一组数据,设置随机数种子
          df = pd.DataFrame(data={" 方 案 ":["plan A", "plan B", "plan C", "plan D", "plan E"]
                                  ,"投票人数":np.random.randint(10,100,5)})
          plt.rcParams['font.sans-serif']=['Simhei'] #显示中文
          plt.rcParams['axes.unicode_minus']=False #设置显示中文后,符号显示受影响,显示负号
          plt.figure(figsize=(6,6))
          plt.pie(df.iloc[:,1], #饼图数据源
                  labels=df.iloc[:,0], #设置每个扇形对应的标签
                  autopct='%.2f%%', #设置百分比精度
                  textprops={'fontsize':13}) #设置饼图中文字的字号
          plt.title(' 方案投票占比饼图 ', fontsize=14)
          plt.show()
      
      if __name__ == '__main__':
          draw_pie()
    2. 绘制效果
  3. 条形图(纵向,柱形图)

     

    1. 代码
      import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      
      # 柱形图:展示分类型变量数据分布的常用图形,
      def draw_bar():
          np.random.seed(1)
          df = pd.DataFrame(data={" 方 案 ": ["plan A", "plan B", "plan C", "plan D", "plan E"]
              , "投票人数": np.random.randint(10, 100, 5)})
          plt.rcParams['font.sans-serif']=['Simhei'] #显示中文
          plt.rcParams['axes.unicode_minus']=False #设置显示中文后,符号显示受影响,显示负号
          plt.figure(figsize=(8,4))
          plt.bar(df.iloc[:,0], df.iloc[:,1], width=0.6)
          plt.title(" 各方案投票人数柱形图 ", fontsize=14)
          plt.ylabel(" 投票人数 ", fontsize=13)
          plt.xlabel(" 方案 ", fontsize=13)
          plt.show()
      
      if __name__ == '__main__':
          draw_bar()
    2. 绘制效果
  4. 条形图(横向)

     

    1. 代码
      import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      
      # 条形图:展示分类型变量数据分布的常用图形
      def draw_barh():
          np.random.seed(1)
          df = pd.DataFrame(data={" 方 案 ": ["plan A", "plan B", "plan C", "plan D", "plan E"]
              , "投票人数": np.random.randint(10, 100, 5)})
          plt.rcParams['font.sans-serif']=['Simhei'] #显示中文
          plt.rcParams['axes.unicode_minus']=False #设置显示中文后,符号显示受影响,显示负号
          plt.figure(figsize=(8,4))
          plt.barh(df.sort_values("投票人数").iloc[:,0], df.sort_values("投票人数").iloc[:,1], height=0.6)
          plt.title(" 各方案投票人数柱形图 ", fontsize=14)
          plt.ylabel(" 方案 ", fontsize=13)
          plt.xlabel(" 投票人数 ", fontsize=13)
          plt.show()
      
      if __name__ == '__main__':
          draw_barh()
    2. 绘制效果
  5. 直方图

     

    1. 代码
      import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      
      # 直方图:用于数值型数据,展示连续变量数据分布的一种图形,用条形的宽度和高度(面积)表示频数的分布
      def draw_hist():
          np.random.seed(1)
          data = np.random.normal(loc=80,scale=20, size=200).astype(int)
          plt.hist(data, [30,40,50,60,70,80,90,100,110,120,130])
          plt.xticks([30,40,50,60,70,80,90,100,110,120,130])
          plt.show()
      
      if __name__ == '__main__':
          draw_hist()
    2. 绘制效果
  6. 散点图
    1. 代码
      import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      
      # 散点图: 使用二维坐标展示两个变量的关系的一种图形
      def draw_scatter():
          df = pd.DataFrame(data={" 产量 ":[2200, 3300, 4400, 5500, 5700, 7300, 8000]
              ,"降雨量":[22,39,55,66,105,100,122]})
          plt.rcParams['font.sans-serif']=['Kaiti']
          plt.rcParams['axes.unicode_minus']=False
          plt.scatter(df.iloc[:, 1], df.iloc[:, 0])
          plt.title(" 降水量与产量关系图 ", fontsize=14)
          plt.ylabel(" 产量 ", fontsize=13)
          plt.xlabel(" 降水量 ", fontsize=13)
          plt.show()
      
      if __name__ == '__main__':
          draw_scatter()
    2. 绘制效果
  7. 箱线图
    1. 代码
      import numpy as np
      import pandas as pd
      import matplotlib.pyplot as plt
      
      # 箱线图是由一组数据的中位数、上四分位数、下四分位数、距离上四分位数1.5倍四分位据(IQR)内的最大值、距离下四分位苏1.5倍四分位距(IQR)内的最小
      # 值这5个特征绘制而成,主要反映数据分布的特征,还可以进行多组数据分布特征的比较
      def draw_boxplot():
          np.random.seed(1)
          df = pd.DataFrame({" 语文 ": np.random.randint(70, 150, 10),
                             " 英语 ": np.random.randint(60,150,10),
                             " 数学 ": np.random.randint(40,150,10)})
          plt.rcParams['font.sans-serif'] = ['Kaiti']
          plt.rcParams['axes.unicode_minus'] = False
          plt.figure(figsize=(8,6))
          plt.boxplot([df.iloc[:,0], df.iloc[:, 1], df.iloc[:, 2]],
                      labels=['语文','英语','数学'])
          plt.show()
      
      if __name__ == '__main__':
          draw_boxplot()
    2. 绘制效果

     

  8. 基于Seaborn绘图库图
    1. 带核密度估计的直方图
      1. 代码
        import numpy as np
        import pandas as pd
        import matplotlib.pyplot as plt
        # Seaborn是一个基于Matplotlib的Python数据可视化库,提供了一个用于绘制有吸引力和信息丰富的统计图形的高级界面
        import seaborn as sns
        
        # 带核密度估计的直方图
        # 直方图旨在通过分箱和计数观察近似生成数据的潜在概率密度函数,Seaborn中的核密度估计为同一个问题提供了不同的解决方案。
        # 核密度估计图不使用离散箱,而使用高斯核平滑观察,产生连续的密度估计。
        def draw_sns_displot():
            np.random.seed(1)
            data = np.random.normal(loc=80, scale=20, size=200).astype(int)
            sns.displot(data, bins=[30,40,50,60,70,80,90,100,110,120,130], kde=True) # kde=True 显示核密度估计曲线
            plt.show()
        
        
        if __name__ == '__main__':
            draw_sns_displot()
      2. 绘制效果
    2. 二元分布图
      1. 代码
        import numpy as np
        import pandas as pd
        import matplotlib.pyplot as plt
        # Seaborn是一个基于Matplotlib的Python数据可视化库,提供了一个用于绘制有吸引力和信息丰富的统计图形的高级界面
        import seaborn as sns
        
        # 二元分布图
        # 绘制联合分布和边际分布,使用两个变量的边际分布扩充二元关系图或二元分布图
        def draw_sns_jointplot():
            np.random.seed(0)
            mean, cov = [0,1],[(1,.5),(.5,1)]
            data = np.random.multivariate_normal(mean, cov, 200)
            df = pd.DataFrame(data, columns=["x", "y"])
            df.head()
            # 绘制联合图
            # sns.jointplot(x="x", y="y", data=df)
            # 绘制散点图
            #sns.relplot(x="x", y="y", data=df)
            # 绘制带核密度估计的二元分布图
            # sns.jointplot(x="x", y="y", data=df, kind="kde")
            # 绘制密度曲线图
            sns.displot(data=df, x="x", y="y", kind="kde")
            plt.show()
        
        if __name__ == '__main__':
            draw_sns_jointplot()
      2. 绘制效果1
      3. 绘制效果2
      4. 绘制效果3
    3. 热力图
      1. 代码
        import numpy as np
        import pandas as pd
        import matplotlib.pyplot as plt
        # Seaborn是一个基于Matplotlib的Python数据可视化库,提供了一个用于绘制有吸引力和信息丰富的统计图形的高级界面
        import seaborn as sns
        
        # 热力图:查看变量间的关系强弱
        # 在热力图中,颜色越深,两者的负相关关系越强;颜色越浅,两者的正相关关系越强
        def draw_sns_heatmap():
            np.random.seed(0)
            df0 = pd.DataFrame(np.random.uniform(-1,1,(7,7)), index=list("abcdefg"), columns=list("ABCDEFG"))
            plt.figure(figsize=(8,6))
            sns.set(font_scale=1.5) # 设置字体大小
            sns.heatmap(df0)
            plt.show()
        
        if __name__ == '__main__':
            draw_sns_heatmap()
      2. 绘制效果

       

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值