如何绘制带有分类和数字(基准)轴的折线图?

时间:2019-12-01 15:39:44

标签: python seaborn

Seaborn使您可以使用点创建分类图

import seaborn as sns

tips = sns.load_dataste('tips')
sns.catplot(x='tip', y='sex', data=tips, jitter=False)

enter image description here

有没有办法将点与同性别的线连接起来?

我的目标是创建一个与下图相似的图(在R's ggplot2中完成)。读seaborn documentation时,我发现没有任何东西与该情节相似。 lineplot仅接受数字值。当前是否有一种明显的方法可以使这种分类图成为我所缺少的?

enter image description here

1 个答案:

答案 0 :(得分:2)

按类别分组,并分别绘制每条线。

import numpy as np
import matplotlib.pyplot as plt

def cat_horizontal_plot(data, category, numeric, ax=None):
    ax = ax or plt.gca()
    for cat, num in data.groupby(category):
        ax.plot(np.sort(num[numeric].values), [cat]*len(num),
                marker="o", mec="k", mfc="none", linestyle="-", color="k")
    ax.set_xlabel(numeric)
    ax.set_ylabel(category)
    ax.margins(y=0.4)
    ax.figure.tight_layout()

用作

import seaborn as sns
tips = sns.load_dataset('tips')

cat_horizontal_plot(tips, "sex", "tip")
plt.show()

enter image description here