关系(五)利用python绘制连接散点图

关系(五)利用python绘制连接散点图

连接散点图(Connected Scatterplot)简介

1

连接散点图(点线图)是折线图的一种,与散点图类似。但添加了按数据点出现顺序的连线,以此来表示两个变量的顺序关系。因此连接散点图既能分析相关性,也可分析趋势性。

快速绘制

  1. 基于seaborn

    import seaborn as sns
    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    np.random.seed(0)
    
    # 自定义数据
    df = pd.DataFrame({
          'x': range(1,10),
          'y': np.random.randn(9)*80+range(1,10)
      })
        
    # 利用lineplot快速绘制连接散点图
    sns.lineplot(x='x',
                 y='y',
                 data=df,
                 marker='o'
                )
    
    plt.show()
    

    2

  2. 基于matplotlib

    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    np.random.seed(0)
    
    # 自定义数据
    df = pd.DataFrame({
          'x': range(1,10),
          'y': np.random.randn(9)*80+range(1,10)
      })
    
    # 利用plot快速绘制连接散点图
    plt.plot(df['x'], df['y'], linestyle='-', marker='o')
    
    plt.show()
    

    3

    定制多样化的连接散点图

    自定义连接散点图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

    通过seaborn绘制多样化的连接散点图

    seaborn主要利用lineplot绘制连接散点图,可以通过seaborn.lineplot了解更多用法

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 自定义数据
    x = [1, 2, 3, 4, 5]
    y = [5, 3, 7, 4, 8]
    
    # 初始化布局
    plt.figure(figsize=(6, 4))
    
    # 带圆圈标记的实线
    sns.lineplot(x=x, y=y, linestyle='-', marker='o', markersize=8, label='Solid Line', color='blue') 
    
    # 带方形标记的虚线
    sns.lineplot(x=x, y=[i + 1 for i in y], linestyle='--', marker='s', markersize=8, label='Dashed Line', color='green') 
    
    # 带有向上三角形标记的点划线
    sns.lineplot(x=x, y=[i + 2 for i in y], linestyle='-.', marker='^', markersize=20, label='Dash-dot Line', color='purple') 
    
    plt.legend(loc='upper left')
    plt.show()
    

    4

通过matplotlib绘制多样化的连接散点图

matplotlib主要利用plot绘制连接散点图,可以通过matplotlib.pyplot.plot了解更多用法

  1. 自定义连接散点图

    import matplotlib.pyplot as plt
    
    # 自定义数据
    x = [1, 2, 3, 4, 5]
    y = [5, 3, 7, 4, 8]
    
    # 初始化布局
    plt.figure(figsize=(6, 4))
    
    # 带圆圈标记的实线
    plt.plot(x, y, linestyle="-", marker="o", markersize=8, label='Solid Line', color='blue')
    
    # 带方形标记的虚线
    plt.plot(x, [i + 1 for i in y], linestyle='--', marker='s', markersize=8, label='Dashed Line', color='green') 
    
    # 带有向上三角形标记的点划线
    plt.plot(x, [i + 2 for i in y], linestyle='-.', marker='^', markersize=20, label='Dash-dot Line', color='purple') 
    
    plt.legend(loc='upper left')
    plt.show()
    

    5

  2. 绘制多个变量的演变过程

    import pandas as pd
    import matplotlib.pyplot as plt
    
    # 导入数据
    df = pd.read_csv("https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/5_OneCatSevNumOrdered.csv")
    
    # 数据清洗
    df = df.loc[(df.name=="Ashley") | (df.name=="Amanda")]
    df = df.loc[(df.sex=="F") & (df.year>1970)]
    df = pd.pivot_table(df, values='n', index=['year'], columns=['name'])
    
    df.head()
    

    6

    # 初始化布局
    plt.figure(figsize=(10, 10))
    
    # 连接散点图
    plt.plot(df.Amanda, df.Ashley, '-', marker='o')
    
    # 为每个点添加年份(避免过度堆积,每隔三个点添加年份)
    for line in range(0, df.shape[0], 3):
         plt.annotate(
              df.index[line], 
              (df.Amanda.iloc[line], df.Ashley.iloc[line]+300 ) ,
              va='bottom',
              ha='center'
         )
            
    # 添加轴标签
    plt.xlabel('Amanda')
    plt.ylabel('Ashley')
    
    
    plt.show()
    

    可以看到由1971年到2013年,Amanda和Ashley名字的人数先增多后下降

    7

总结

以上通过seaborn的lineplot和matplotlib的plot快速绘制连接散点图,并通过修改参数或者辅以其他绘图知识自定义各种各样的连接散点图来适应相关使用场景。

共勉~

相关推荐

  1. python绘制

    2024-04-30 05:24:01       35 阅读
  2. python绘制三维

    2024-04-30 05:24:01       35 阅读
  3. matlab绘制

    2024-04-30 05:24:01       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 05:24:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 05:24:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 05:24:01       82 阅读
  4. Python语言-面向对象

    2024-04-30 05:24:01       91 阅读

热门阅读

  1. VS2019编译 Qt5.15.12 和 Qt6.5.3

    2024-04-30 05:24:01       35 阅读
  2. 【c++基础】求细胞数量

    2024-04-30 05:24:01       29 阅读
  3. 【考研数学】线代老师李永乐是否被高估了?

    2024-04-30 05:24:01       37 阅读
  4. IP路由安全:保护网络免受威胁

    2024-04-30 05:24:01       26 阅读
  5. Bash脚本-快查快用总览

    2024-04-30 05:24:01       34 阅读
  6. HOT100与剑指Offer

    2024-04-30 05:24:01       35 阅读