关系(五)利用python绘制连接散点图
连接散点图(Connected Scatterplot)简介
连接散点图(点线图)是折线图的一种,与散点图类似。但添加了按数据点出现顺序的连线,以此来表示两个变量的顺序关系。因此连接散点图既能分析相关性,也可分析趋势性。
快速绘制
-
基于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()
-
基于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()
定制多样化的连接散点图
自定义连接散点图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。
通过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()
通过matplotlib绘制多样化的连接散点图
matplotlib主要利用plot
绘制连接散点图,可以通过matplotlib.pyplot.plot了解更多用法
-
自定义连接散点图
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()
-
绘制多个变量的演变过程
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()
# 初始化布局 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
快速绘制连接散点图,并通过修改参数或者辅以其他绘图知识自定义各种各样的连接散点图来适应相关使用场景。
共勉~