2015-11-23 3 views
2

Я столкнулся с этой проблемой, помещая индекс в легенду моего графика. Если я не использую индекс в тексте легенды, все выглядит отлично, а дескриптор и текст выровнены, но с индексом изменяется шрифт текста, а также он застревает в верхней части окна легенды. Это, как я устанавливаю легендаmatplotlib Знак и текст легенды не выровнены

 ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.12), 
      ncol=4,prop={'size':16}) 

и легенда

 legend_labels=['BR:$K_r$=5%',"BR:$K_r$=10%","Tape:$K_r$=5%","Tape:$K_r$=20%","HDD:$K_r$=5%","HDD:$K_r$=20%","SSD:$K_r$=5%","SSD:$K_r$=20%"] 

Я также видел несколько вопросов о выравнивании текста и легенды о StackOverflow, но решений, предложенных не работает для меня. Я попытался получить текст из легенды и установить выравнивание в «центр» безрезультатно.

Вот минимальный рабочий пример.

from matplotlib.pyplot import * 

    subplot(211) 
    plot([1,2,3], label="$test_1$") 
    plot([3,2,1], label="test2") 
    legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, 
      ncol=2, mode="expand", borderaxespad=0.,prop={'size':18}) 
    show() 

Я использую python 2.7.6.

+0

Вы можете вставить скриншот того, что вы получаете и как он отличается от ваших ожиданий? Потому что все выглядит хорошо для меня. –

+0

Аспирант хочет, чтобы базовая линия обеих меток была одинаковой (то есть «строка», на которой сидит главный текст), тогда как в настоящее время нижний индекс вызывает смещение базовой линии этого ярлыка. – maxymoo

+0

. Тогда все работает для меня, см. http://imgur.com/AxmLv8Y –

ответ

1

Разница в шрифтах исходит из математического режима: окружающий текст с знаками доллара говорит matplotlib о препроцессе текста с помощью LaTeX, а математический шрифт LaTeX (Computer Modern) отличается от Liberation Sans (или любого другого шрифта matplotlib используется для простого текста). Самый простой способ обойти это заблуждение является использование математического режима только для индексов:

plot([1,2,3], label="test$_1$") 

Тогда математика шрифт будет использоваться только для индексов:

enter image description here

+0

Но в моем случае мне нужно подписать письмо. Если вы замените график ([1,2,3], label = "$ test_1 $") по сюжету ([1,2,3], label = "$ test_r $") для размера шрифта 18, 'r' выглядит действительно мало по сравнению с остальным текстом легенды, чего я не хочу. – Pretty

+0

Затем вы можете установить 'mathtext.default' в' regular' (согласно этому вопросу: http://stackoverflow.com/questions/22569071/matplotlib-change-math-font-size-and-then-go- back-to-default) –

+0

УДИВИТЕЛЬНЫЙ! Благодаря! – Pretty

Смежные вопросы