使用Matplotlib在Python中填充曲线和x轴之间的区域

时间:2013-11-23 17:54:23

标签: python matplotlib plot

我试图使用MatPlotLib在Python的曲线下填充曲线区域。

这是我的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没有填充x轴和曲线之间的整个区域?

我已完成Google和StackOverflow搜索,但无法找到类似的示例。直觉上它似乎应该填满曲线下的整个区域。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

希望这有助于解释你的奇怪情节。

答案 2 :(得分:1)

如果您想在pd.DataFrame上使用它,请使用它:

df.abs().interpolate().plot.area(grid = 1,
                                  linewidth = 0.5)

interpolate()是可选的。

enter image description here

相关问题