Как построить линейный график с категориальными и числовыми (базовыми) осями? - PullRequest
1 голос
/ 01 декабря 2019

Seaborn позволяет создавать категориальный график, используя точки

import seaborn as sns

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

enter image description here

Есть ли способ связать точки с линией длятого же пола?

Моя цель - создать сюжет, который будет похож на рисунок ниже (сделано в Rggplot2 ). Читая документацию seaborn Я не нахожу ничего похожего на этот сюжет. Линейный график принимает только числовые значения. Есть ли в настоящее время очевидный способ сделать этот категоричный сюжет таким, которого мне не хватает?

enter image description here

1 Ответ

2 голосов
/ 01 декабря 2019

Сгруппируйте по категориям и постройте каждую строку отдельно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...