這將是一個評論,但它似乎並沒有很好的格式。
看看代碼,看起來fill_between返回一個PolyCollection,與上面提到的使用破折號關鍵字的Line2D對象相反。 PolyCollection類實際上並不將邊緣線保存爲Line2D類(這可能適合於優化原因)。這意味着即使邊線繪製得像線條一樣,您不必像Line2D類那樣具有完全的靈活性。該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實例中設置短劃線序列變量,然後在draw命令期間調用gc.set_dash(dash_seq)。
我沒有看到任何方式將此代碼掛鉤(注入)到PolyCollection中,而無需修改源代碼。因此,這可能是matplotlib github中的一項功能請求。這似乎是一個合理的要求,能夠控制邊緣的短劃線序列,但這可能比初看起來更復雜,因爲那樣你將不得不在同一個邊緣(在一般情況下)之間同步這個序列,這可能不是值得。
但是,您可能會發現寫一個新函數來繪製正方形而不是使用fill_between函數會更好,因爲這不是它的意思。通過個人功能,您可以使用Line2D對象。
編輯:如果你碰巧在github上問matplotlib,讓我知道他們說什麼。他們實際上可能會說,你可以在draw命令中注入適當的子類代碼。我將不得不考慮更多。