上一篇介绍了绘制不重叠散点图,本文主要介绍用seaborn绘制抖动图(有重叠),其绘制方法也非常简单。


# 利用iris数据集做演示
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 设置seaborn主题
sns.set(style="white", palette="muted", color_codes=True) 
iris = sns.load_dataset("iris")
# 原始矩阵
print("原始矩阵:")
print(iris.head())

# 长宽矩阵转换
iris = pd.melt(iris, "species", var_name="measurement")
print("转换后的矩阵:")
print(iris.head())

# 初始化图像
f, ax = plt.subplots()
# 边框设置
# sns.despine(bottom=True, left=True)

# 绘制散点图
sns.stripplot(x="value", y="measurement", hue="species",
              data=iris, dodge=True, alpha=.25, zorder=1)

# 添加均值点
sns.pointplot(x="value", y="measurement", hue="species",
              data=iris, dodge=.5, join=False, palette="dark",
              markers="d", scale=.7, ci=None)

# 图例设置、位置等调整
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles[3:], labels[3:], title="species",
          handletextpad=0, columnspacing=0,
          loc="upper left", ncol=1, frameon=True)
plt.show()

如此,一张漂亮的散点图就绘制好了。

参考资料:

1.http://seaborn.pydata.org/examples/jitter_stripplot.html