Вопрос по – Как мне соответствовать длинному названию?

18

Там естьаналогичный вопрос - но я не могу заставить предложенное там решение работать.

Вот пример графика с длинным заголовком:

#!/usr/bin/env python

import matplotlib
import matplotlib.pyplot
import textwrap

x = [1,2,3]
y = [4,5,6]

# initialization:
fig = matplotlib.pyplot.figure(figsize=(8.0, 5.0)) 

# lines:
fig.add_subplot(111).plot(x, y)

# title:
myTitle = "Some really really long long long title I really really need - and just can't - just can't - make it any - simply any - shorter - at all."

fig.add_subplot(111).set_title("\n".join(textwrap.wrap(myTitle, 80)))

# tight:
(matplotlib.pyplot).tight_layout()

# saving:
fig.savefig("fig.png")

это дает

 AttributeError: 'module' object has no attribute 'tight_layout'

и если я заменю(matplotlib.pyplot).tight_layout() сfig.tight_layout() это дает:

 AttributeError: 'Figure' object has no attribute 'tight_layout'

Итак, мой вопрос - как мне вписать название в сюжет?

@ Джо Кингтон: Наверное, вы правы: воспроизводите вашиanswer выдает ту же ошибку. Я загружаю последний источник. Adobe
Мой1.0.1. Adobe
tight_layout только в последних двух выпусках matplotlib. Какую версию ты используешь? Я думаюtight_layout был добавлен в 1.1, хотя это могло быть 1.0. Joe Kington

Ваш Ответ

2   ответа
6

import pylab as plt

plt.rcParams["axes.titlesize"] = 8

myTitle = "Some really really long long long title I really really need - and just can't - just can't - make it any - simply any - shorter - at all."
plt.title(myTitle)
plt.show()

enter image description here

В ответе вы указали несколько других хороших решений, которые включают добавление новых строк. Есть дажеавтоматическое решение это изменяет размер в зависимости от фигуры!

Это круто. +1 Adobe
Это работает, но это плохое решение. В вашем примере шрифт для заголовка даже меньше, чем для меток. Это сделает заголовок очень трудным для чтения в публикации или презентации.
@gerrit Заслуга решения зависит от конкретного пользователя. Для некоторых, как и вы, конечной целью может быть академическое издание. Для других заголовок может использоваться для хранения метаданных, например, системные параметры, при этом эстетика менее важна. Это, безусловно, ответ на вопрос "как мне вписать заголовок в сюжет".
@ Adobe страница перехода к настройке matplotlib находится здесь:matplotlib.sourceforge.net/users/customizing.htmlХотя это поможет, если вы уже знаете, что ищете!
50

#!/usr/bin/env python3

import matplotlib
from matplotlib import pyplot as plt
from textwrap import wrap

data = range(5)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(data, data)

title = ax.set_title("\n".join(wrap("Some really really long long long title I really really need - and just can't - just can't - make it any - simply any - shorter - at all.", 60)))

fig.tight_layout()
title.set_y(1.05)
fig.subplots_adjust(top=0.8)

fig.savefig("1.png")

enter image description here

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