Python 存在NAN时如何自定义破折号参数

Python 存在NAN时如何自定义破折号参数,python,matplotlib,Python,Matplotlib,如果可能的话,我宁愿避免在线条图中使用颜色,主要是为了考虑色盲的人。然而,python只有四种内置的行样式,因此任何超过四行的行都需要自定义的破折号模式。当NA值存在时,这就成了问题(参见图——它给出了一个极端例子,在交替破折号的中间小心地定位NANS)。 两条线应具有相同的图案。但是,由于NaN值,它们没有。 当然,我可以过滤我的数组来删除NAN,但我想知道是否还有其他解决方法可以让这两条线具有相同的破折号模式 我编辑这篇文章是为了说明这是一个极端的例子。否则,对于试图理解你的问题的人来说,

如果可能的话,我宁愿避免在线条图中使用颜色,主要是为了考虑色盲的人。然而,python只有四种内置的行样式,因此任何超过四行的行都需要自定义的破折号模式。当NA值存在时,这就成了问题(参见图——它给出了一个极端例子,在交替破折号的中间小心地定位NANS)。

两条线应具有相同的图案。但是,由于NaN值,它们没有。

当然,我可以过滤我的数组来删除NAN,但我想知道是否还有其他解决方法可以让这两条线具有相同的破折号模式

我编辑这篇文章是为了说明这是一个极端的例子。否则,对于试图理解你的问题的人来说,这是一个不必要的难题。总的来说,我建议只有当破折号明显短于数据中的结构时,才应该使用破折号。NAN是数据中的结构,如果不是,则在打印之前将其从数据中删除似乎是合理的。这将是pandas和numpy中的一行代码。我对其进行了编辑,以明确这是一个极端的例子。否则,对于试图理解你的问题的人来说,这是一个不必要的难题。总的来说,我建议只有当破折号明显短于数据中的结构时,才应该使用破折号。NAN是数据中的结构,如果不是,则在打印之前将其从数据中删除似乎是合理的。这将是pandas和numpy中的一行代码。
import numpy as np
x = np.arange(0, 100)
y = np.arange(0, 100)
nans = np.arange(0, 100, dtype=float)
nans[::10] = np.nan

fig = pl.figure(figsize=(3.25, 2.5))
ax0 = fig.add_subplot(111)

ax0.plot(x, y, dashes=[8, 4, 2, 4, 2, 4])
ax0.plot(nans, y - 25, dashes=[8, 4, 2, 4, 2, 4])

ax0.legend(("without NaNs", "with NaNs"), loc=2, fontsize=8)