Линия регрессии для оверлей сюжетов с двумя осями на неправильных осях [дубликат]

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

62
задан mwaskom 1 June 2014 в 17:40
поделиться

1 ответ

Это немного зависит от того, какую функцию вы используете.

Функции построения в морском море в целом разделены на два класса

  • «Осевые уровни», в том числе regplot, boxplot, kdeplot и многие другие
  • «Функции уровня изображения», включая lmplot, factorplot, jointplot и один или два других

Первая группа идентифицируется путем принятия явного аргумента ax и возвращения объекта Axes. Как можно предположить, вы можете использовать их в «объектно-ориентированном» стиле, передав им Axes:

f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)

Функции уровня осей будут только рисовать на Axes и не будут в противном случае беспорядок с фигурой, поэтому они могут прекрасно сосуществовать в объектно-ориентированном скрипте matplotlib.

Вторая группа функций (уровень уровня) отличается тем фактом, что полученный график может потенциально включать несколько Оси, которые всегда организованы «осмысленным образом». Это означает, что функции должны иметь полный контроль над фигурой, поэтому невозможно построить, скажем, lmplot, на тот, который уже существует. Вызов функции всегда инициализирует фигуру и устанавливает ее для конкретного графика.

Однако, как только вы вызвали lmplot, он вернет объект типа FacetGrid . Этот объект имеет некоторые методы работы на полученном графике, которые немного знают о структуре графика. Он также предоставляет базовую фигуру и массив осей в аргументах FacetGrid.fig и FacetGrid.axes. Функция jointplot очень похожа, но она использует объект JointGrid . Таким образом, вы все равно можете использовать эти функции в объектно-ориентированном контексте, но вся ваша настройка должна появиться после того, как вы вызвали функцию.

150
ответ дан mwaskom 19 August 2018 в 06:08
поделиться
Другие вопросы по тегам:

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