不推荐使用的警告 - mataplotlib 库中的 where 参数

Posted

技术标签:

【中文标题】不推荐使用的警告 - mataplotlib 库中的 where 参数【英文标题】:deprecated Warning - where parameter in mataplotlib library 【发布时间】:2020-10-17 05:23:17 【问题描述】:
Ages = [19,20,21,22,23,24,25,26,27]

python = [23000,30000,40000,50000,60000,70000,80000,90000,100000]
Java  = [15000,20000,25000,35000,40000,50000,90000,100000,300000]


pl.plot(Ages,python,label="Python developer") 
pl.plot(Ages,Java,label="Java developer") 

pl.fill_between(Ages,python,Java,where= (python > Java), alpha=0.5, color="blue" , label="greater than")
pl.fill_between(Ages,python,Java,where= (python < Java), alpha=0.5, color="red" , label="less than")


pl.title("Fill area on line plots")   
pl.legend(loc="upper left")
pl.show()

我收到弃用警告,当 python 值小于 Java 值时,我也没有得到红色边距。下面我提到了错误和输出屏幕截图...

错误:

matplot.py:143: MatplotlibDeprecationWarning: The parameter where must have the same size as x in fill_between(). This will become an error in future versions of Matplotlib.
  pl.fill_between(Ages,python,Java,where= (python > Java), alpha=0.5, color="blue" , label="greater than")
matplot.py:144: MatplotlibDeprecationWarning: The parameter where must have the same size as x in fill_between(). This will become an error in future versions of Matplotlib.
  pl.fill_between(Ages,python,Java,where= (python < Java), alpha=0.5, color="red" , label="less than")

输出:

【问题讨论】:

【参考方案1】:

此弃用警告主要是指出where 参数与其他数组的参数数量不同。通常它暗示不受欢迎的行为。之前,此类错误被忽略。

where 参数预计对于绘图上的每个点都有一个 True/False 值。

在这种情况下,表达式 python &lt; Java 只有一个值,因为两者都是常规 Python 列表。要获取单个布尔值的列表,您需要手动创建该列表[p &lt; j for p, j in zip(python, Java)]。或者将所有内容更改为 numpy 数组,并让其 vectorization and broadcasting 负责创建布尔值数组。

请注意,您需要一个额外的参数interpolate=True 来处理其中一个点的值为True 而另一个点的值为False 的线段。

这是将列表更改为 numpy 数组(python &gt; Java 然后也返回一个数组)和 interpolate=True 设置的代码。

import matplotlib.pyplot as plt
import numpy as np

Ages = np.array([19, 20, 21, 22, 23, 24, 25, 26, 27])

python = np.array([23000, 30000, 40000, 50000, 60000, 70000, 80000, 90000, 100000])
Java = np.array([15000, 20000, 25000, 35000, 40000, 50000, 90000, 100000, 300000])

plt.plot(Ages, python, label="Python developer")
plt.plot(Ages, Java, label="Java developer")

plt.fill_between(Ages, python, Java, where=(python > Java), interpolate=True,
                 alpha=0.5, color="blue", label="greater than")
plt.fill_between(Ages, python, Java, where=(python < Java), interpolate=True,
                 alpha=0.5, color="red", label="less than")
plt.title("Fill area on line plots")
plt.legend(loc="upper left")
plt.show()

【讨论】:

以上是关于不推荐使用的警告 - mataplotlib 库中的 where 参数的主要内容,如果未能解决你的问题,请参考以下文章

在php中停止不推荐使用的警告[重复]

抑制 Java 中不推荐使用的导入警告

设置模块不推荐使用的警告

误导性的“不推荐使用没有回调的异步函数”警告

警告:componentWillReceiveProps 已重命名,不推荐使用

警告:不推荐使用从地址类型继承的合约成员“余额”。坚固性