Исключить линии сетки из границ сюжета в питоне? - PullRequest
2 голосов
/ 15 октября 2019

Я ищу способ удалить линии сетки с осей графика, но, к сожалению, я не нашел решения этой проблемы и не нашел его где-либо еще.

Есть лиспособ удалить определенные линии сетки или выбрать, какие линии сетки строить, не полагаясь на автоматическую функцию?

Я написал небольшой пример вывода графика для иллюстрации ниже и был бы рад любой помощи.

import matplotlib.pyplot as plt
import numpy as np

def linear(x, a, b):
    return a*x+b

x = np.linspace(0, 1, 20)
y = linear(x, a=1, b=2)

fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(10, 6))

ax.plot(x, y, color='darkred')
ax.set_xlim(0, 1)
ax.set_ylim(2, 3)
ax.grid(which='major', axis='y', linestyle='--', color='grey', linewidth=3)

plt.savefig("Testplot.pdf", format='pdf')

Ответы [ 2 ]

2 голосов
/ 15 октября 2019

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

ax.yaxis.get_major_ticks()[5].gridline.set_visible(False)
0 голосов
/ 15 октября 2019

Вот предложение с галочками и горизонтальными линиями. Идея состоит в том, чтобы задать галочки (не обязательно, но почему бы и нет), а затем нарисовать горизонтальные штриховые линии там, где вы хотите свою сетку.

import matplotlib.pyplot as plt
import numpy as np

def linear(x, a, b):
    return a*x+b

x = np.linspace(0, 1, 20)
y = linear(x, a=1, b=2)

fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(10, 6))

ax.plot(x, y, color='darkred')
ax.set_xlim(0, 1)
ax.set_ylim(2, 3)

yticks = np.arange(2, 3, 0.2)
grid_lines = np.arange(2.2, 3, 0.2)

ax.set_yticks(yticks)

for grid in grid_lines:
    ax.axhline(grid, linestyle='--', color='grey', linewidth=3)

Вывод:

Output plot

Почему я включил yticks? Ну, вы могли бы разработать функцию, которая будет вводить yticks и соответственно возвращать положение линий сетки. Я думаю, что это может быть удобно в зависимости от ваших потребностей. Удачи!

...