Matplotlib pyplot - График графика с рамками [дубликат]

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

57
задан Velimir Mlaker 20 April 2015 в 17:47
поделиться

4 ответа

Возможно, вам нужно указать логический аргумент в ваших вызовах, например. используйте ax.yaxis.grid(True) вместо ax.yaxis.grid(). Кроме того, поскольку вы используете их оба, вы можете объединить их в ax.grid, который работает на обоих, а не делать это один раз для каждого измерения.

ax = plt.gca()
ax.grid(True)

Это должно сортировать вас.

66
ответ дан wim 19 August 2018 в 15:17
поделиться
  • 1
    Я попробовал, но по какой-то причине он по-прежнему выглядит так же, как и раньше – Osmond Bishop 18 April 2013 в 05:21
  • 2
    Вы делаете это в интерактивном интерпретаторе? Убедитесь, что вы устанавливаете сетку before , вызывающую plt.show() – wim 18 April 2013 в 05:25
  • 3
    Я использую iPython. Я попытался добавить plt.show (), это не изменит ситуацию. – Osmond Bishop 18 April 2013 в 05:32
  • 4
    Ну, это странно. Какая у вас версия ipython, попробуйте запустить ее, как ipython --pylab, и сразу же plt.grid(True) - вы видите сетку? – wim 18 April 2013 в 06:09
  • 5
    Я попробовал plt.grid(True) и получил пустой граф как с вертикальными, так и с горизонтальными линиями сетки, так что да, это странно, почему я не могу получить это для своего участка. Я использую последнюю доступную версию iPython. – Osmond Bishop 19 April 2013 в 00:28

возможно, это может решить проблему: matplotlib, определить размер сетки на графике

ax.grid(True, which='both')

Правда в том, что сетка работает, но есть только одна v-grid в 00:00, а в других нет сетки. Я встречаю ту же проблему, что в течение 1 дня есть только одна сетка.

4
ответ дан Community 19 August 2018 в 15:17
поделиться

plt.gca().xaxis.grid(True) оказалось для меня решением

29
ответ дан isedev 19 August 2018 в 15:17
поделиться
  • 1
    myaxes.grid(which='x') не работал для меня с matplotlib версии 1.4.2 ... не смог заставить ключевое слово which работать вообще. Однако myaxes.xaxis.grid(True) сделал трюк и концептуально лучше ИМО. О, и не забывайте о полезном методе myaxes.set_axisbelow(True), чтобы привязать сетку к данным. – travc 16 November 2014 в 20:26
  • 2
    Наконец, это то, что я искал везде! – Wok 24 April 2015 в 13:31

Согласно документации matplotlib , сигнатура метода Axes класса grid() выглядит следующим образом:

Axes.grid (b = None, который = 'major', axis = 'both', ** kwargs) Включить или выключить сеточки осей.

which может быть «основным» (по умолчанию), «второстепенным» или «обеим», чтобы контролировать, затронуты ли основные сетки тика, небольшие сетки тика или оба.

axis может быть «оба» (по умолчанию), «x» или «y» для управления тем, какой набор линий сетки нарисован.

Итак, чтобы показать линии сетки для обоих ось x и ось y, мы можем использовать следующий код:

ax = plt.gca()
ax.grid(which='major', axis='both', linestyle='--')

Этот метод дает нам более тонкий контроль над тем, что показывать для линий сетки.

7
ответ дан jdhao 19 August 2018 в 15:17
поделиться
Другие вопросы по тегам:

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