Как получить чередующиеся цвета в пунктирной линии с использованием matplotlib?
В 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_effects
, но я не могу решить, можно ли достичь того, чего я хочу; Я могу очертить или затенять линию, но я не уверен, что могу наложить разную пунктирную линию.
Ответы
Ответ 1
Попробуйте это.
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()
i увеличила ширину линии, чтобы она была хорошо видна. Поскольку желтый цвет был не таким ясным на белом фоне; изменил его на зеленый. Извини за это. Вы можете менять цвета в любой момент:)
![output]()