填充错误区域的matplotlib中的ax.fill()

时间:2017-04-21 13:45:52

标签: python matplotlib

我正在尝试使用matplotlib绘制Lorenz曲线,我想填充Lorenz曲线下面的区域,这是我编写代码的方式:

import { Meteor } from 'meteor/meteor';

if (Meteor.isServer){
  Meteor.startup(() => {
 process.env.MAIL_URL="smtp://mygmailaddress%40gmail.com:mypassword@smtp.gmail.com:465/";
Email.send({
  to: "sendeto@yahoo.com",
  from: "sendfrom@gmail.com",
  subject: "Example Email",
  text: "The contents of our email in plain text.",
});
  });
}

最终结果如下:

enter image description here

显然它没有按预期工作,因为我想填补曲线以下的区域。

我尝试了其他一些例子:

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("darkgrid")
# I used seaborn for different styles.

x = [0, 0.10304926499801351, 0.20455899880810488, 0.30986789829161698,
0.41132796980532377, 0.51018077075883983, 0.61201330949543098,
0.71223182359952319, 0.81185439014700034, 0.91063269765593957,
1.0]

y = [0, 0.016037735849056604, 0.033018867924528301, 0.063207547169811321,
0.087735849056603782, 0.13962264150943399, 0.20000000000000001,
0.27547169811320754, 0.37264150943396224, 0.53018867924528301,
1.0]

fig, ax = plt.subplots()
ax.fill(x, y, 'b', alpha=0.3)
plt.show()

他们一切都很好。我一定错过了自己的情节,但无法弄明白。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我认为您要使用fill_between代替fillfill填充曲线点之间的区域。因此,您得到的结果是预期的。 fill_between填充curce与其他曲线或常量y值之间的区域。

使用

ax.fill_between(x, y, y2=0, color='b', alpha=0.3)

你得到y = 0零线和曲线填充之间的区域:

enter image description here