Это невозможно сделать без взлома. jointplot
вызывает метод JointGrid
, который в свою очередь создает новый объект figure
каждый раз, когда он вызывается.
Таким образом, взлом состоит в том, чтобы сделать два сундука (JG1
JG2
), затем сделать новую фигуру, а затем перенести объекты осей из JG1
JG2
в новую созданную фигуру.
Наконец, мы корректируем размеры и позиции подзаголовков на новом рисунке, который мы только что создали.
JG1 = sns.jointplot("C1", "C2", data=df, kind='reg')
JG2 = sns.jointplot("C1", "C2", data=df, kind='kde')
#subplots migration
f = plt.figure()
for J in [JG1, JG2]:
for A in J.fig.axes:
f._axstack.add(f._make_key(A), A)
#subplots size adjustment
f.axes[0].set_position([0.05, 0.05, 0.4, 0.4])
f.axes[1].set_position([0.05, 0.45, 0.4, 0.05])
f.axes[2].set_position([0.45, 0.05, 0.05, 0.4])
f.axes[3].set_position([0.55, 0.05, 0.4, 0.4])
f.axes[4].set_position([0.55, 0.45, 0.4, 0.05])
f.axes[5].set_position([0.95, 0.05, 0.05, 0.4])
Это взломать, потому что теперь мы используем частные методы _axstack
и _add_key
, которые могут и не оставаться такими же, как сейчас, в будущих версиях matplotlib
.
Ваше сравнение row[4] == 0
вернет TRUE, когда значение в точности равно 0
и что-либо оценивается как 0
, в этом случае пустая строка.
Используйте строгую проверку на равенство для достижения желаемого результата:
if (row[4] === 0) {
См. Также: