#python #matplotlib #plot #seaborn
#python #matplotlib #сюжет #seaborn
Вопрос:
Итак, я создаю relplot и хочу, чтобы заголовки (a, b, c, d, e, f) были под каждым подзаголовком, но не могу этого сделать. На самом деле, я вообще не могу переместить заголовок по оси y. Пример кода выглядит следующим образом:
g = sns.relplot(x="X", y="Y",
hue="Label", palette=palette,
col='Dataset', col_wrap=3,
legend='full', height=4, aspect=1,
kind="scatter", data=data, facet_kws={'sharex': False, 'sharey': False},
s=15
)
for ax in g.axes.flat:
ax.set_ylabel('')
ax.set_xlabel('')
ax.set_xticklabels([])
ax.set_yticklabels([])
for ax, title in zip(g.axes.flat, ['a', 'b', 'c', 'd', 'e', 'f']):
ax.set_title(title)
ax.title.set_position([0.3, -0.01])
sns.despine(top=False, right=False, left=False, bottom=False, offset=None, trim=False)
plt.show()
И это создает изображение, подобное этому:
Изображение
Изменение -0.01 (аргумент y) в ax.title.set_position([0.3, -0.01]) ничего не делает, однако изменение 0.3 (аргумент x) перемещает заголовок вдоль оси x…
Также пытался передать kwargs x и y в ax.set_title(): та же история, x работает, y ничего не делает.
Есть мысли?
Комментарии:
1.В новейшем API
set_title
matplotlib 3.3.1 естьy
аргумент для настройки расположения вертикальных осей для заголовка. Судя по исходному коду, я думаю, что этоy
именно тот текстy
.2. Если я не задам
y
аргумент вset_title()
,y
inset_position()
не будет работать так, как вы описываете, даже еслиprint(ax.title)
сообщает, что он вычислен. Интересно, что если я установлюy
вset_title()
,y
установленный вset_position()
вступит в силу. Я не смог найти ничего полезного в исходном коде, вы можете сообщить об ошибке в matplotlib.3. Вы могли бы использовать
ax.set_title(title, x=0.3, y=0.92)
для настройки положения заголовка, хотя я все еще не понимаю, почемуax.set_title(title, position=[0.3, 0.92])
это не работает. На этот раз y даже не изменен.4. @Ynjxsjmh Извините, я не совсем понимаю: вам удалось изменить положение y текста или нет? Поскольку я вообще не могу это изменить, любое число, которое я пытаюсь использовать для аргумента y, результат один и тот же.
5. @Ynjxsjmh Что касается новейшего пакета matplotlib, боюсь, у него некоторые проблемы с совместимостью с seaborn, потому что, когда я его установил, я вообще не смог заставить этот код выводить что-либо, вызвав ошибку. Я использую Anaconda, поэтому моя версия matplotlib не самая новая.