Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用matplotlib获得虚线中的交替颜色?_Python_Matplotlib_Plot - Fatal编程技术网

Python 如何使用matplotlib获得虚线中的交替颜色?

Python 如何使用matplotlib获得虚线中的交替颜色?,python,matplotlib,plot,Python,Matplotlib,Plot,在matplotlib中,我想使用交替使用黑色和黄色虚线的matplotlib.pyplot生成一行,然后我想在图例中包含该行。我该怎么做 我可以这样做: from matplotlib import pyplot as plt, gridspec import numpy as np grid = gridspec.GridSpec(1,1) ax = plt.subplot(grid[0,0]) x = np.arange(1,11) y = x * 2 ax.plot(x, y, '

在matplotlib中,我想使用交替使用黑色和黄色虚线的
matplotlib.pyplot
生成一行,然后我想在图例中包含该行。我该怎么做

我可以这样做:

from matplotlib import pyplot as plt, gridspec
import numpy as np

grid = gridspec.GridSpec(1,1)
ax = plt.subplot(grid[0,0])

x = np.arange(1,11)
y = x * 2

ax.plot(x, y, '-', color = 'black', linewidth = 1, label = 'my line')
ax.plot(x, y, '--', color = 'yellow')
ax.legend()

plt.show()
但是,图例上的线条将显示为黑色实线,而不是黑色和黄色的虚线

我确实看过matplotlib.path\u effects,但我无法确定是否有可能实现我想要的;我可以画出线条的轮廓或阴影,但我不确定是否可以覆盖不同颜色的虚线。

试试这个

from matplotlib import pyplot as plt, gridspec, lines

import numpy as np

grid = gridspec.GridSpec(1,1)
ax = plt.subplot(grid[0,0])

x = np.arange(1,11)
y = x * 2

ax.plot(x, y, '-', color = 'black', linewidth = 5)
ax.plot(x, y, '--', color = 'lawngreen', linewidth = 5)

dotted_line1 = lines.Line2D([], [], linewidth=5, linestyle="--", dashes=(10, 1), color='lawngreen')
dotted_line2 = lines.Line2D([], [], linewidth=5, linestyle="-", dashes=(5, 4), color='black')

plt.legend([(dotted_line1, dotted_line2)], ["My Line"])
plt.show()
我增加了线条的宽度,使其清晰可见。因为黄色在白色背景下不是那么清晰;把它改成绿色。很抱歉。您可以随时以任何方式更改颜色:)

如果需要两条虚线的叠加,则进行轻微调整。本质上,可以使用Tanmaya Meher描述的相同方法,但要获得正确的偏移量,需要在破折号规范中进行小修改

具体地说,假设你想要1个点,1个空白和交替的颜色

. . . .
然后,您可以使用dash spec
[1,3]
开始第一条虚线。现在第二种颜色应该从位置2开始,然后具有相同的规格,以便它们很好地交叉。由于没有明确的方法来设置偏移量,因此需要一个解决方法破折号序列
[0,2,1,1]
,即没有点,两个空格,一个点,一个空格,用于设置所需偏移量

import matplotlib.pyplot as plt

from matplotlib.lines import Line2D

color1 = "blue"
color2 = "orange"

fig, ax = plt.subplots()
l1 = Line2D([0,1], [0.5, 0.5], linestyle="dotted", color=color1, lw=10)
l1.set_dashes([0, 2, 1,1])
l2 = Line2D([0,1], [0.5, 0.5], linestyle="dotted", color=color2, lw=10)
l2.set_dashes([1, 3])

ax.add_artist(l1)
ax.add_artist(l2)
ax.legend(handles=((l1,l2),), labels=("label",), handlelength=3)

简短问题:线条是否应该有黄色和黑色虚线(即黄色虚线-空白-黑色虚线-空白-黄色虚线…)。或者在黑色实线的上方修改黄色虚线的图例条目就足够了吗?我脑海中的图像是Tanmaya Meher在下面发布的内容–但是如果你有一种按照你所描述的方式去做的话,这可能对将来访问这个问题的人有用,所以我鼓励你添加它作为答案!谢谢,这太完美了。