2013-11-23 3 views
4

Я пытаюсь просто заполнить область под кривой участка в Python, используя MatPlotLib.Область заполнения между кривой и осью x в Python с использованием Matplotlib

Вот мой SSCCE:

import json 
import pprint 
import numpy as np 
import matplotlib.pyplot as plt 

y = [0,0,0,0,0,0,0,0,0,0,0,863,969,978,957,764,767,1009,1895,980,791] 
x = np.arange(len(y)) 


fig2, ax2 = plt.subplots() 
ax2.fill(x, y) 

plt.savefig('picForWeb.png') 
plt.show() 

Прилагаемый рисунок показывает, выводимые. output of fill

Кто-нибудь знает, почему Python не заполняет всю область между осью х и кривой?

Я выполнил поиск Google и StackOverflow, но не смог найти аналогичный пример. Интуитивно кажется, что он должен заполнить всю площадь под кривой.

ответ

3

Обычно я использую функцию fill_between для этих видов графиков. Попробуйте что-нибудь подобное вместо этого:

import numpy as np 
import matplotlib.pyplot as plt 

y = [0,0,0,0,0,0,0,0,0,0,0,863,969,978,957,764,767,1009,1895,980,791] 
x = np.arange(len(y)) 

fig, (ax1) = plt.subplots(1,1); 
ax1.fill_between(x, 0, y) 
plt.show() 

Другие примеры here. Cheers, Trond

+0

Ваш пример отлично работает. Его все еще неясно, почему функция заполнения имеет поведение, наблюдаемое на прилагаемом рисунке, но эй, если fill_between работает, это работает! – user2826735

1

plt.fill предполагает, что у вас есть закрытая форма для заполнения - интересно, если вы добавите окончательный 0 к своим данным, вы получите гораздо более разумный сюжет.

import numpy as np 
import matplotlib.pyplot as plt 

y = [0,0,0,0,0,0,0,0,0,0,0,863,969,978,957,764,767,1009,1895,980,791,0] 
x = np.arange(len(y)) 


fig2, ax2 = plt.subplots() 
ax2.fill(x, y) 

plt.savefig('picForWeb.png') 
plt.show() 

Результатов в: Closed Plot

Надеется, что это помогает объяснить свой странный сюжет.

+0

Я вижу сейчас, это имеет смысл. Таким образом, «функция заполнения» предназначена для заполнения области в замкнутых многоугольниках. С другой стороны, функция «fill_between» предназначена для области между кривыми. Спасибо за объяснение – user2826735

 Смежные вопросы

  • Нет связанных вопросов^_^