【问题标题】:Matplotlib: fill_between two curves using discrete pointsMatplotlib:使用离散点填充两条曲线之间
【发布时间】:2018-03-28 09:30:23
【问题描述】:

我正在尝试重新创建以下图像:

到目前为止,我已经编写了这段代码:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

yLow,yHigh = (-75,200)
xLow,xHigh = (-5.5,2.5)

plt.figure(figsize=(15,10))
ax = plt.gca()

x = np.linspace(xLow,xHigh,1000)
y = x**4
yG = -20*x +20

plt.plot(x,y,linewidth=1,linestyle='--',color='black');
plt.plot(x,yG,linewidth=3,);

plt.xlim(xLow,xHigh);
plt.ylim(yLow,yHigh);
# plt.xticks([], []);
# plt.yticks([], []);

plt.fill_between(x,yG,yHigh,alpha=0.3,color='green');
plt.fill_between(x,yG,yLow,alpha=0.3,color='green');
plt.fill_between(x,y,yG,color='red');

产生:

现在,我想绘制单个点的网格并将它们着色为绿色或红色,就像原始图像中一样。我基本上想用离散点而不是完整的阴影填充_between。这可能吗?

【问题讨论】:

  • 您可以定义一个网格并计算点应该具有红色和绿色的位置。然后用这些位置绘制一个散点图作为颜色信息。一旦你被困住了,你可以问一个关于这个问题的问题。

标签: python matplotlib


【解决方案1】:

为了将来参考,我可以使用散点图和网格来完成此操作:

X,Y = np.meshgrid(x,np.linspace(yLow,yHigh,numPoints));
Z = ( (Y<X**4) & (Y>-20*X +20) ) | ( (Y>X**4) & (Y<-20*X +20) );
plt.scatter(X,Y,c=Z,cmap=ListedColormap(['green','red']),alpha=0.5);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2021-03-02
    • 2020-01-18
    • 2020-07-12
    • 2022-01-13
    相关资源
    最近更新 更多