我在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)
答案 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])