Подтвердить что ты не робот

Получение вертикальных линий сетки для отображения в линейном графике в matplotlib

Я хочу получить горизонтальные и вертикальные линии сетки на моем графике, но по умолчанию появляются только горизонтальные линии сетки. Я использую pandas.DataFrame из SQL-запроса в python для создания графика линии с датами на оси x. Я не уверен, почему они не появляются в датах, и я попытался найти ответ на этот вопрос, но не смог найти его.

Все, что я использовал для построения графика, - это простой код ниже.

data.plot()
grid('on')

- это DataFrame, который содержит даты и данные из SQL-запроса.

Я также попытался добавить код ниже, но я все равно получаю тот же вывод без вертикальных линий сетки.

ax = plt.axes()        
ax.yaxis.grid() # horizontal lines
ax.xaxis.grid() # vertical lines

Любые предложения?

enter image description here

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

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

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

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

Ответ 4

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

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

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

Ответ 5

Только для горизонтальных линий

ax = plt.axes()        
ax.yaxis.grid() # horizontal lines

Это сработало