如何设置axvlines使用matplotlib中axes.color_cycle的相同颜色?

Tom*_*gal 6 python plot matplotlib

我在matplotlibrc文件的axes.color_cycle中设置了以下颜色.当我绘制线条和步骤时,它工作正常.但是当我使用它来绘制带有axvline的垂直线时,它不会使用设置的颜色,如图所示:

在此输入图像描述

它使用matplotlib的默认颜色.如何让axvline继续颜色循环?

可重现的代码

import numpy as np
import matplotlib.pyplot as plt
import itertools

m = 5
n = 5

x = np.zeros(shape=(m, n))
plt.figure(figsize=(5.15, 5.15))
plt.clf()
plt.subplot(111)
marker = itertools.cycle(('o', 'v', '^', '<', '>', 's', '8', 'p'))
ax = plt.gca()
for i in range(1, n):
    x = np.dot(i, [1, 1.1, 1.2, 1.3])
    y = x ** 2
    color = next(ax._get_lines.color_cycle)
    plt.plot(x, y, linestyle='', markeredgecolor='none', marker=marker.next(), color=color, label = str(i))
    plt.plot(x, y, linestyle='-', color = color)
plt.axvline(2.)
plt.axvline(3.)
plt.axhline(4.)
plt.axhline(6.)
plt.ylabel(r'y', labelpad=6)
plt.xlabel(r'x', labelpad=6)
plt.show()
Run Code Online (Sandbox Code Playgroud)

The*_*ude 7

您也可以为垂直线指定颜色:

vline_color = next(ax._get_lines.color_cycle)

plt.axvline(2., color = vline_color)
Run Code Online (Sandbox Code Playgroud)

  • 在 matplotlib &gt;= 1.5 中,“color_cycle”被替换为“prop_cycler”。您可以使用 vline_color = next(ax._get_lines.prop_cycler)['color']` 修复此解决方案 (3认同)
  • 该解决方案似乎不适用于 python 3 上的 matplotlib 2。此外,它使用私有属性“_get_lines”,其行为可能随时发生变化。 (2认同)