使用'破折号绘制连续线。 matplotlib的情节中的参数()

时间:2016-05-20 21:54:26

标签: python matplotlib plot

我在for块中绘制了几行,并使用matplotlib的dashes参数设置了每行的样式。

这些线中的一条(或多条)需要连续。我发现除了制作一个非常长的短划线之外,我没有办法划出这样一条线,如下面的MCVE所示。这有效,但感觉相当hackish。

是否有更多"正确"实现这个目标的方法?

(我知道我可以使用没有plt.plot()参数的dashes来生成连续的绘图,但我需要生成许多自定义样式的行,并与一个或多个连续行混合)< / p>

MCVE:

import matplotlib.pyplot as plt
import numpy as np


col = ['c', 'm', 'g', 'y', 'k']
c_dash = [[8, 4], [8, 4, 2, 4], [2, 2], [8, 4, 2, 4, 2, 4], [1000, 1]]

for i in range(5):
    x, y = range(10), np.random.uniform(0., 10., 10)
    plt.plot(x, y, color=col[i], dashes=c_dash[i])

plt.savefig('test.png', dpi=300)

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您更改c_dash列表以包含偏移参数偏移,开启,关闭序列)),则可以使用linestyle作为你的kwarg而不是破折号。除了自定义破折号之外,您还可以使用linestyle关键字‘solid’ | ‘dashed’, ‘dashdot’, ‘dotted’

import matplotlib.pyplot as plt
import numpy as np


col = ['c', 'm', 'g', 'y', 'k']
c_dash = [[0,[8, 4]], [0,[8, 4, 2, 4]], 'solid', [0,[8, 4, 2, 4, 2, 4]], 'solid']


for i in range(5):
    x, y = range(10), np.random.uniform(0., 10., 10)
    plt.plot(x, y, color=col[i], linestyle=c_dash[i])

enter image description here