分簇散点图 可以理解为数据点不重叠的分类散点图 该函数类似于stripplot(),但该函数可以对点进行一些调整,使得数据点不重叠。 swarmplot()可以自己实现对数据分类的展现,也可以作为盒形图或小提琴图的一种补充,用来显示所有结果以及基本分布情况。
案例代码已上传:Github地址
import seaborn as sns import matplotlib.pyplot as plt #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例1: 水平分簇散点图 """ sns.swarmplot(x=tips["total_bill"]) plt.show() import seaborn as sns import matplotlib.pyplot as plt #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例2: 根据x的类别进行分组统计 """ sns.swarmplot(x="day", y="total_bill", data=tips) plt.show() import seaborn as sns import matplotlib.pyplot as plt #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例3: 对调x和y,让其横向显示 对比案例2和案例3 """ sns.swarmplot(x="total_bill", y="day", data=tips) plt.show() import seaborn as sns import matplotlib.pyplot as plt #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例4: 设置hue对每个分组中进行第二次分类(x=sex进行第一次数据分组, hue=day对每一组进行数据分类) """ sns.swarmplot(x="day", y="total_bill", hue="sex",palette="Set2", data=tips) plt.show() import seaborn as sns import matplotlib.pyplot as plt #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例5: 设置dodge将数据在分类组中分离出来 对比案例4和案例5 """ sns.swarmplot(x="day", y="total_bill", hue="sex", data=tips, palette="Set2", dodge=True) plt.show() import seaborn as sns import matplotlib.pyplot as plt #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例6: 通过设置order来显式指定分类顺序 order=[字段变量名1,字段变量名2,...] """ sns.swarmplot(x="time", y="tip", data=tips, order=["Dinner", "Lunch"]) plt.show() import seaborn as sns import matplotlib.pyplot as plt #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例7: 设置size来指定标记的大小 对比案例6和案例7 """ sns.swarmplot(x="time", y="tip", data=tips, order=["Dinner", "Lunch"], size=9) plt.show() import seaborn as sns import matplotlib.pyplot as plt import numpy as np #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例8: 根据数据情况绘制箱图和分簇散点图 在箱图上绘制分簇散点图 """ sns.boxplot(x="tip", y="day", data=tips, whis=np.inf) sns.swarmplot(x="tip", y="day", data=tips, color=".2") plt.show() import seaborn as sns import matplotlib.pyplot as plt #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例9: 根据数据情况绘制小提琴图和分簇散点图 在小提琴图上绘制分簇散点图 """ sns.violinplot(x="day", y="total_bill", data=tips, inner=None) sns.swarmplot(x="day", y="total_bill", data=tips, color="white", edgecolor="gray") plt.show() import seaborn as sns import matplotlib.pyplot as plt import numpy as np #设置风格 sns.set(style="whitegrid") # 构建数据 tips = sns.load_dataset("tips") """ 案例10: 利用catplot()来绘制分簇散点图(通过指定kind="swarm") """ sns.catplot(x="sex", y="total_bill", hue="smoker", col="time", data=tips, kind="swarm", height=4, aspect=.7); plt.show()上述案例代码已上传:Github地址 Github地址https://github.com/Vambooo/SeabornCN
更多技术干货在公众号:数据分析与可视化学研社