gpt4 book ai didi

python - 如何控制matplotlib fill_ Between函数中边缘的虚线?

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:10 25 4
gpt4 key购买 nike

我最近一直在使用 matplotlib 的 fill_ Between 函数来绘制具有虚线边缘的矩形。例如,这个位于 t1、t2、fmin 和 fmax 之间:

ax.fill_between([t1, t2], fmin, fmax, facecolor=(0, 0, 0, 0), linestyle='--) 

例如,我知道可以使用关键字参数 dashes=[6, 2]plot 函数中指定破折号开关序列,但是这不适用于 fill_ Between 。我查看了 fill_ Between() documentation ,但我没有找到任何解决方案。

有什么想法吗?

最佳答案

这本来是一条评论,但格式似乎不太好。

查看代码,fill_ Between 返回一个 PolyCollection,而不是像上面提到的使用 dashes 关键字的 Line2D 对象。 PolyCollection 类实际上并不将边缘线保存为 Line2D 类(这可能有利于优化)。这意味着即使边缘像线一样绘制,您也不必像使用 Line2D 类那样具有完全的灵 active 。 PolyCollection 似乎缺少此代码:

def _draw_dashed(self, renderer, gc, path, trans):
gc.set_linestyle('dashed')
if self._dashSeq is not None:
gc.set_dashes(0, self._dashSeq)

特别是,PolyCollection 的绘制方法中没有 set_dashes 代码。要实现这一点,您似乎需要一种在 PolyCollection 实例中设置破折号序列变量的方法,然后在绘制命令期间调用 gc.set_dashes(dash_seq) 。

我没有看到任何方法可以在不修改源代码的情况下将此代码 Hook (注入(inject))到 PolyCollection 中。因此,也许最好将其报告为 matplotlib github 中的功能请求。能够控制边缘的破折号序列似乎是一个合理的请求,但这可能比最初的浏览更复杂,因为这样你就必须在每个单独的边缘之间同步这个序列(在一般情况下),这可能不是值得。

但是,您可能会发现最好编写一个新函数来绘制正方形,而不是使用 fill_ Between 函数,因为这不是它的用途。通过个人功能,您可以使用 Line2D 对象。

编辑:如果您碰巧在 github 上询问 matplotlib,请告诉我他们怎么说。他们实际上可能会说您可以通过适当的子类化在绘图命令中注入(inject)代码。我得再考虑一下。

关于python - 如何控制matplotlib fill_ Between函数中边缘的虚线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33121022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com