Как сделать шрифт больше в сюжете? [Дубликат]

Другое событие 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));
}

201
задан Ninjakannon 7 May 2015 в 14:50
поделиться

10 ответов

Обратите внимание, что новые версии MPL имеют ярлык для этой задачи. Пример показан в другом ответе на этот вопрос: https://stackoverflow.com/a/11386056/42346

Код ниже приведен в иллюстративных целях и может не обязательно оптимизироваться.

import matplotlib.pyplot as plt
import numpy as np

def xticklabels_example():
    fig = plt.figure() 

    x = np.arange(20)
    y1 = np.cos(x)
    y2 = (x**2)
    y3 = (x**3)
    yn = (y1,y2,y3)
    COLORS = ('b','g','k')

    for i,y in enumerate(yn):
        ax = fig.add_subplot(len(yn),1,i+1)

        ax.plot(x, y, ls='solid', color=COLORS[i]) 

        if i != len(yn) - 1:
            # all but last 
            ax.set_xticklabels( () )
        else:
            for tick in ax.xaxis.get_major_ticks():
                tick.label.set_fontsize(14) 
                # specify integer or one of preset strings, e.g.
                #tick.label.set_fontsize('x-small') 
                tick.label.set_rotation('vertical')

    fig.suptitle('Matplotlib xticklabels Example')
    plt.show()

if __name__ == '__main__':
    xticklabels_example()

enter image description here [/g1]

84
ответ дан Community 19 August 2018 в 06:00
поделиться
  • 1
    Так же, как в стороне: вместо того, чтобы перебирать объекты метки метки, вы можете использовать plt.setp. (Также посмотрите ax.tick_params). Например, вы можете просто сделать plt.setp(ax.get_xticklabels(), rotation='vertical', fontsize=14). Кроме того, объекты осей имеют метод ax.is_last_row(), который может быть полезен в таких случаях, как ваш пример. Вместо if i != len... вы можете сделать if not ax.is_last_row(). (Почему это метод, я понятия не имею ... Matplotlib ненавидит свойства, по-видимому!) – Joe Kington 18 June 2011 в 03:11
  • 2
    @Joe: это мой первый раз услышать о is_last_row(), спасибо! Я использовал plt.setp в прошлом, и не обязательно был уверен, что он представляет собой более канонический способ настройки тиковых меток. Вы убрали это сомнение, спасибо. В более широком смысле: ваши ответы, особенно в теге matplotlib, часто оставляют меня в страхе. Продолжайте в том же духе. – bernie 18 June 2011 в 03:51
  • 3
    Благодаря!! Я ценю добрые слова, особенно от вас! В этом случае канонический является очень относительным. plt.setp является «matlab-ism», а явный цикл, вероятно, намного более питонов. Будучи преобразованием в Matlab, я, setp чувствует себя естественным, но каждому свое. Любой из них вполне читабельен, т.е. – Joe Kington 18 June 2011 в 04:36
  • 4
    В новых версиях я обнаружил, что вам нужно использовать параметр labelize : например. ax.tick_params(axis='x', labelsize=8) – Vladtn 16 February 2012 в 22:49
  • 5
    Должно быть get_ticklabels не get_major_ticks – jez 15 June 2015 в 10:25

Вы также можете изменить параметры отображения ярлыков, например fontsize, с помощью следующей строки:

zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
12
ответ дан ATX_Bigfoot 19 August 2018 в 06:00
поделиться

В текущих версиях Matplotlib вы можете сделать axis.set_xticklabels(labels, fontsize='small').

18
ответ дан Christoph 19 August 2018 в 06:00
поделиться

На самом деле существует более простой способ. Я только что нашел:

import matplotlib.pyplot as plt
# We prepare the plot  
fig = plt.figure(1)
# We define a fake subplot that is in fact only the plot.  
plot = fig.add_subplot(111)

# We change the fontsize of minor ticks label 
plot.tick_params(axis='both', which='major', labelsize=10)
plot.tick_params(axis='both', which='minor', labelsize=8)

Это только ответы на размер label части вашего вопроса.

337
ответ дан ericmjl 19 August 2018 в 06:00
поделиться

plt.tick_params (axis = 'both', which = 'minor', labelize = 12)

6
ответ дан jingweimo 19 August 2018 в 06:00
поделиться
  • 1
    Это единственный ответ, который работает, если вы хотите изменить шрифт без установки новых меток. – David Stansby 20 September 2017 в 09:20
  • 2
    – Kyle Swanson 15 October 2018 в 22:47

Другая альтернатива

У меня есть два графика бок о бок и хотелось бы настроить метки меток отдельно.

Вышеупомянутые решения были близки, но они не работали для меня. Я нашел свое решение с этой страницы matplotlib .

ax.xaxis.set_tick_params(labelsize=20)

Это сделало трюк и было прямо к делу. Для моего случая использования это был сюжет справа, который нужно было отрегулировать. Для графика слева, так как я создавал новые метки меток, я смог отрегулировать шрифт в том же процессе, что и установка меток.

т.е.

ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)

, таким образом, я использовал для правого сюжета,

ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)

Минор тонко ... Я знаю ... но я надеюсь, что это кому-то помогает:)

Бонусные баллы, если кто знает, как настроить размер шрифта метки порядка величины.

7
ответ дан Kyle Swanson 19 August 2018 в 06:00
поделиться

Для меньшего шрифта я использую

ax1.set_xticklabels (xticklabels, fontsize = 7)

, и он работает!

13
ответ дан Pengyao 19 August 2018 в 06:00
поделиться

Для меня работало следующее:

ax2.xaxis.set_tick_params(labelsize=7)
ax2.yaxis.set_tick_params(labelsize=7)

Преимущество вышеизложенного заключается в том, что вам не нужно предоставлять array из labels и работать с любыми данными на axes.

2
ответ дан Rohit Poudel 19 August 2018 в 06:00
поделиться

Чтобы указать как размер шрифта, так и вращение в одно и то же время, попробуйте следующее:

plt.xticks(fontsize=14, rotation=90)
90
ответ дан scottlittle 19 August 2018 в 06:00
поделиться
  • 1
    Это лучший и самый простой ответ. – user1271772 20 September 2017 в 05:17
  • 2
    Обратите внимание, что это используется при работе с MATLAB-подобным интерфейсом pyplot. В случае объектно-ориентированного интерфейса должен использоваться метод tick_params () объекта axes или set_tick_params () объекта оси (см. Другие ответы). – wombatonfire 20 July 2018 в 17:45

В качестве альтернативы вы можете просто сделать:

import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size 
37
ответ дан user2468932 19 August 2018 в 06:00
поделиться
Другие вопросы по тегам:

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