在以下示例中,错误条图不使用axes
rc中指定的标记周期,尽管它确实使用了颜色循环。在fmt
中指定marker
而不是cycler
会引发AttributeError: Unknown property fmt
。如何使用prop_cycle
指定错误条图的标记?我正在使用Matplotlib 1.5.1和Python 3.5.1。
import matplotlib.pyplot as plt
from cycler import cycler
plt.rc('axes', prop_cycle=cycler(color=['orange', 'violet', 'darkgreen'],
marker=['s', 'o', 'd']))
plt.rc('lines', linestyle=None)
plt.errorbar((0, 1), (1, 0), yerr=(0.1, 0.1))
plt.errorbar((0, 1), (0, 1), yerr=(0.1, 0.1))
plt.errorbar((0, 1), (0.5, 0.75), yerr=(0.1, 0.1))
答案 0 :(得分:0)
虽然这并没有回答所提出的问题,但有两种方法可以使用prop_cycle
来解决这个问题。一种是简单地使用for
循环来构造图形。如果您不想使用for
循环,则可以将生成器函数定义为标记的yield
值。这样做的缺点是它不会为每个轴自动重置,但我认为它比for
循环更容易使用。 while True:
语句是必要的,以使其循环回到开头,就像它是要使用的标记循环一样。
import matplotlib.pyplot as plt
from cycler import cycler
def mfunc(syms):
while True:
for s in syms:
yield s
markers = ['s', 'o']
mark = mfunc(markers)
plt.rc('axes', prop_cycle=cycler(color=['orange', 'violet', 'darkgreen']))
plt.rc('lines', linestyle=None)
plt.errorbar((0, 1), (1, 0), yerr=(0.1, 0.1), marker=next(mark))
plt.errorbar((0, 1), (0, 1), yerr=(0.1, 0.1), marker=next(mark))
plt.errorbar((0, 1), (0.5, 0.75), yerr=(0.1, 0.1), marker=next(mark))