Покажите укусы на маргинальных участках морского побережья.JointGrid - PullRequest
0 голосов
/ 22 апреля 2020

Мне нужно показать уктики в предельном распределении графика Seaborn.jointgrid, но это не кажется простым.

Вот пример кода, взятого из документации Seaborn:

import seaborn as sns; sns.set(style="ticks", color_codes=True)
import bumpy as np
tips = sns.load_dataset("tips")

g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g = g.plot_joint(sns.scatterplot, color="m")
_ = g.ax_marg_x.hist(tips["total_bill"], color="b", alpha=.6,
                      bins=np.arange(0, 60, 5))
_ = g.ax_marg_y.hist(tips["tip"], color="r", alpha=.6,
                      orientation="horizontal",
                      bins=np.arange(0, 12, 1))

Я хотел бы добавить яксис и его значения к маргинальным графикам. Я могу построить yaxis используя:

sns.despine(ax=g.ax_marg_x)
sns.despine(ax=g.ax_marg_y)

Но он не содержит никаких значений или тиков. Я попробовал предложенное решение здесь , но оно просто ничего не делает.

Вот график, представленный кодом

image

1 Ответ

1 голос
/ 23 апреля 2020

Оси маргинальных графиков 'общие' с основным графиком. По умолчанию они не получают метки. Чтобы снова включить тиковые метки, tick_params имеет такие параметры, как labelleft=True и labelbottom=True.

При установке тиков для значений гистограммы может быть также удобно установить GridLines. Число линий сетки по умолчанию может быть слишком низким, их можно увеличить с помощью тикового локатора . Кроме того, стиль линии по умолчанию может быть слишком тяжелым. Linestyle, цвет и толщина могут быть адаптированы с помощью grid()

import seaborn as sns; sns.set(style="ticks", color_codes=True)
import numpy as np
from matplotlib.ticker import MaxNLocator

tips = sns.load_dataset("tips")
g = sns.JointGrid(x="total_bill", y="tip", data=tips)
g = g.plot_joint(sns.scatterplot, color="m")
_ = g.ax_marg_x.hist(tips["total_bill"], color="b", alpha=.6,
                     bins=np.arange(0, 60, 5))
_ = g.ax_marg_y.hist(tips["tip"], color="r", alpha=.6,
                     orientation="horizontal",
                     bins=np.arange(0, 12, 1))
g.ax_marg_y.tick_params(labeltop=True)
g.ax_marg_y.grid(True, axis='x', ls=':')
g.ax_marg_y.xaxis.set_major_locator(MaxNLocator(4))

g.ax_marg_x.tick_params(labelleft=True)
g.ax_marg_x.grid(True, axis='y', ls=':')
g.ax_marg_x.yaxis.set_major_locator(MaxNLocator(4))

resulting plot

...