前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关系(五)利用python绘制连接散点图

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

作者头像
HsuHeinrich
发布2024-04-30 18:42:25
2280
发布2024-04-30 18:42:25
举报
文章被收录于专栏:HsuHeinrich

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

连接散点图(Connected Scatterplot)简介

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

快速绘制

基于seaborn

代码语言:javascript
复制
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()

基于matplotlib

代码语言:javascript
复制
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()

定制多样化的连接散点图

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

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

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

代码语言:javascript
复制
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()

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

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

自定义连接散点图

代码语言:javascript
复制
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()

绘制多个变量的演变过程

代码语言:javascript
复制
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()
代码语言:javascript
复制
# 初始化布局
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名字的人数先增多后下降

总结

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

共勉~

参考资料

[1]

seaborn.lineplot: https://seaborn.pydata.org/generated/seaborn.lineplot.html

[2]

matplotlib.pyplot.plot: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.plot.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HsuHeinrich 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关系(五)利用python绘制连接散点图
    • 连接散点图(Connected Scatterplot)简介
      • 快速绘制
        • 定制多样化的连接散点图
          • 通过seaborn绘制多样化的连接散点图
          • 通过matplotlib绘制多样化的连接散点图
        • 总结
          • 参考资料
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档