matplotlib 曲线和x轴之间的填充区域

zaqlnxep  于 2023-10-24  发布在  其他
关注(0)|答案(3)|浏览(159)

我尝试使用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()

所附图片显示了产生的输出。

有人知道为什么Python没有填充x轴和曲线之间的整个区域吗?
我做了谷歌和StackOverflow搜索,但找不到类似的例子。直觉上,它似乎应该填补曲线下的整个区域。

vptzau2j

vptzau2j1#

我通常使用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

cxfofazt

cxfofazt2#

如果你想在pd.DataFrame上使用这个:

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

interpolate()是可选的。

ehxuflar

ehxuflar3#

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()

结果:x1c 0d1x
希望这有助于解释你的奇怪情节。

相关问题