Как изменить размер участка рисунка с помощью пакета Seaborn FacetGrid [дубликат]

Вот несколько способов доступа к родительскому контексту внутри дочернего контекста -
  1. Вы можете использовать функцию bind().
  2. Хранить ссылку на контекст / внутри внутри другой переменной (см. пример ниже).
  3. Использовать функции ES6 Arrow .
  4. Изменить код / function design / architecture - для этого вы должны иметь команду над шаблонами проектирования в javascript.

1. Используйте функцию bind()

function MyConstructor(data, transport) {
    this.data = data;
    transport.on('data', ( function () {
        alert(this.data);
    }).bind(this) );
}
// Mock transport object
var transport = {
    on: function(event, callback) {
        setTimeout(callback, 1000);
    }
};
// called as
var obj = new MyConstructor('foo', transport);

Если вы используете underscore.js - http://underscorejs.org/#bind

transport.on('data', _.bind(function () {
    alert(this.data);
}, this));

2 Сохраните ссылку на контекст / внутри внутри другой переменной

function MyConstructor(data, transport) {
  var self = this;
  this.data = data;
  transport.on('data', function() {
    alert(self.data);
  });
}

3 Функция стрелки

function MyConstructor(data, transport) {
  this.data = data;
  transport.on('data', () => {
    alert(this.data);
  });
}
34
задан Erik 4 January 2016 в 14:07
поделиться

5 ответов

Чтобы быть немного более конкретным:

%matplotlib inline

import seaborn as sns

exercise = sns.load_dataset("exercise")

# Defaults are size=5, aspect=1
sns.factorplot("kind", "pulse", "diet", exercise, kind="point", size=2, aspect=1)
sns.factorplot("kind", "pulse", "diet", exercise, kind="point", size=4, aspect=1)
sns.factorplot("kind", "pulse", "diet", exercise, kind="point", size=4, aspect=2)

Вы хотите передать размер аргумента или «аспект» в sns.factorplot () при построении вашего сюжета.

Размер изменяет высоту, , сохраняя соотношение сторон (поэтому он также будет расширяться, если изменяется только размер.)

Аспект изменит ширину, сохраняя константа высоты.

Вышеприведенный код должен быть запущен локально в ноутбуке ipython.

Размеры рисунков в этих примерах уменьшены, чтобы показать эффекты, и потому что графики из приведенного выше кода были довольно большими при сохранении в виде png. Это также показывает, что размер / аспект включает легенду в поле.

size = 2, aspect = 1

size=2, aspect=1 [/g2]

size = 4, aspect = 1

size=4, aspect=1 [/g3]

size = 4, aspect = 2

size=4, aspect=2 [/g4]

Кроме того, все остальные полезные параметры / аргументы и значения по умолчанию для этой функции построения можно просмотреть, как только загрузится модуль «sns»:

help(sns.factorplot)
56
ответ дан Fernando Hernandez 22 August 2018 в 09:01
поделиться
  • 1
    это единственное решение, которое работает для меня. Пробовал все остальные, даже если ошибок нет, фигура по-прежнему отображается как размер и аспект по умолчанию (малый и квадратный). – szeitlin 5 October 2016 в 15:44

mpl.rc хранится в глобальном словаре (см. http://matplotlib.org/users/customizing.html ). Итак, если вы хотите изменить размер одной фигуры (локально), она выполнит трюк:

plt.figure(figsize=(45,10))
sns.factorplot(...)

Он работал для меня с помощью matplotlib-1.4.3 и seaborn-0.5.1

18
ответ дан arutaku 22 August 2018 в 09:01
поделиться
  • 1
    Работа для меня, пока я не уважаю тот же порядок, что и вы, plt.figure, действительно должен идти первым. благодаря – Overdrivr 5 October 2016 в 09:12
  • 2
    действительно работает для меня. hrmm – ansonw 4 April 2017 в 20:43
  • 3
    В этом случае вам также понадобится import matplotlib.pyplot as plt – psychemedia 12 April 2017 в 11:32
  1. Не использовать %pylab inline, он устарел, используйте %matplotlib inline
  2. Вопрос не специфичен для IPython.
  3. использовать функцию seaborn .set_style передайте его вашему rc в качестве второго параметра или kwarg .: http://web.stanford.edu/~mwaskom/software/seaborn/generated/seaborn.set_style.html
3
ответ дан Matt 22 August 2018 в 09:01
поделиться

Размер фигуры контролируется параметрами size и aspect до factorplot. Они соответствуют размеру каждой грани size» действительно означает «высота», а затем size * aspect дает ширину), поэтому, если вы нацелены на определенный размер для всей фигуры, вы Мне нужно будет отступить назад.

4
ответ дан mwaskom 22 August 2018 в 09:01
поделиться
  • 1
    Мой первый день использования matplotlib и Seaborn, так извиняюсь за глупый вопрос, но что mpl.rc("figure", figsize=(45, 10)) хорошо для того, если не контролировать размер фигуры? Я также вижу тот же код mpl.rc, который используется здесь: github.com/mwaskom/seaborn/issues/112 - и он не меняет размер на моих сюжетах. – slhck 20 March 2015 в 16:54
  • 2

Если вы просто хотите масштабировать фигуру, используйте приведенный ниже код:

import matplotlib.pyplot as plt
plt.figure(figsize=(8, 6))
sns.factorplot("MONTH", "VALUE", hue="REGION", data=typessns, kind="box", palette="OrRd"); // OR any plot code
0
ответ дан Tunaki 22 August 2018 в 09:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: