Поскольку seaborn использует matplotlib для построения графиков, большинство (все?) Его функций имеют какой-то способ передачи аргументов в подчиненную функцию matplotlib, которая рисует график.Это хороший дизайн, который обеспечивает гибкость, не мешая высокоуровневым функциям seaborn со слишком большим количеством аргументов.
Однако, кажется, есть два отдельных механизма для этого.Некоторые функции просто принимают произвольные аргументы ключевых слов, а любые, которые не распознаются высокоуровневой функцией, просто передаются в базовую функцию matplotlib.Другие требуют, чтобы вы добавили дополнительные аргументы в ключевые слова.
Например, seaborn.scatterplot
и seaborn.lmplot
оба AFAIK используют matplotlib.pyplot.scatter
в качестве базовой функции построения графика.Если мы хотим передать аргумент s
в matplotlib.pyplot.scatter
для управления размером, в seaborn.scatterplot
мы можем просто добавить его к вызову функции:
sns.scatterplot(data=df, x='mpg',y='weight',s=10)
, но в seaborn.lmplot
мы должны вставить это в scatter_kws
dict:
sns.lmplot(data=df, x='mpg',y='weight', scatter_kws={'s' : 10})
Возможно, я упускаю что-то очевидное, но я не смог понять, почему используются эти разные механизмы.Это связано с тем, что Seaborn работает невидимо для конечного пользователя?Один стиль унаследован, а код переходит в другой стиль?