matplotlib fill_between() отрисовывает ненужные дополнительные строки до первой / последней точки

#python #matplotlib

#python #matplotlib

Вопрос:

Следующий скрипт рисует красный прямоугольник, но matplotlib добавляет дополнительные строки вдоль осей к первой / последней точкам. Как я могу нарисовать красную рамку без красных линий? Colab v3.2.2 по умолчанию использует matplotlib, но если я обновлюсь v3.3.3 и перезапущу среду выполнения, я все равно получу красные строки.

 def draw():
  # read in data
  x = [10, 10, 20, 20, 10]
  y = [10, 20, 20, 10, 10]

  # plot data
  ax.fill_between(x, y, color = 'red')
  ax.plot(x, y, color = 'black', linewidth = 2)

if __name__ == '__main__':
  # We are running this script on its own
  import pandas as pd
  import matplotlib.pyplot as plt
  fig, ax = plt.subplots(1, 1)      
  draw()
  plt.show()
 

Вот скриншот результата в Google colab:
red_box.ipynb

Комментарии:

1. согласно строке документа, подпись для fill_between является ax.fill_between(x, y1, y2=0) . Да, вы ожидали бы эту строку. Вы ищете Polygon вместо

2. Похоже fill() , что это дает желаемый эффект вместо fill_between() или Polygon : fill(x, y, color='red') в этом примере matplotlib .

Ответ №1:

Вам просто нужно изменить аргумент «color» на «facecolor», и он должен работать

 def draw():
  # read in data
  x = [10, 10, 20, 20, 10]
  y = [10, 20, 20, 10, 10]

  # plot data
  ax.fill_between(x, y, facecolor = 'red')
  ax.plot(x, y, color = 'black', linewidth = 2)

if __name__ == '__main__':
  # We are running this script on its own
  import pandas as pd
  import matplotlib.pyplot as plt
  fig, ax = plt.subplots(1, 1)      
  draw()
  plt.show()