Из определения seaborn.FacetGrid
map
подпись вызова FacetGrid.map
имеет значение
def map(self, func, *args, **kwargs):
"""
...
args : strings
Column names in self.data that identify variables with data to
plot. The data for each variable is passed to `func` in the
order the variables are specified in the call.
...
"""
Таким образом, допущение g
имеет тип seaborn.FacetGrid
- который мы подтверждаем строкой
g = sns.FacetGrid(df, row="g", hue="g", aspect=15, height=.5, palette=pal)
в связанном примере
Затем, когда вы звоните
g.map(label, "x")
"x"
интерпретируется как столбец в self.data
(df["x"]
в данном случае). Используются ли эти данные в функции или нет, это не имеет значения: их наличие определяется подписью вызова.
Редактировать
Значения, которые передаются в аргумент label
func
в g.map
, поступают из этой части источника :
def map(self, func, *args, **kwargs):
# ...
# Insert a label in the keyword arguments for the legend
if self._hue_var is not None:
kwargs["label"] = utils.to_utf8(self.hue_names[hue_k])
# ...
В основном это получает имя hue
от каждого datasubset
и передает его в аргумент ключевого слова label
, который затем передается в функцию рисования:
# ...
# Draw the plot
self._facet_plot(func, ax, plot_args, kwargs)
# ...
где функция func
, переданная в g.map
, наконец, называется
def _facet_plot(self, func, ax, plot_args, plot_kwargs):
# ...
func(*plot_args, **plot_kwargs)
# ...
Таким образом, аргумент label
исходит из указания df["g"]
в качестве аргумента hue
в линия
g = sns.FacetGrid(df, row="g", hue="g", aspect=15, height=.5, palette=pal)