我可以在matplotlib中循环线条样式吗
我知道怎么在matplotlib中循环使用一系列颜色。但是,我想知道是否可以用类似的方法来循环使用线条样式(比如实线、虚线、波浪线等等)?这样做是为了让我的图表在打印时更容易阅读。有没有什么建议可以实现这个呢?
9 个回答
16
这里有一些使用循环器来开发样式集的例子。
循环器可以添加到组合中,比如红色用'-',蓝色用'--',等等。
plt.rc('axes', prop_cycle=(cycler('color', list('rbgk')) +
cycler('linestyle', ['-', '--', ':', '-.'])))
直接在坐标轴上使用:
ax1.set_prop_cycle(cycler('color', ['c', 'm', 'y', 'k']) +
cycler('lw', [1, 2, 3, 4]))
循环器可以进行组合(http://matplotlib.org/cycler/),这样可以提供更多独特的样式选择。
for ax in axarr:
ax.set_prop_cycle(cycler('color', list('rbgykcm')) *
cycler('linestyle', ['-', '--']))
另请参见:http://matplotlib.org/examples/color/color_cycle_demo.html
26
即将发布的matplotlib v1.5版本将不再使用color_cycle这个功能,而是引入新的prop_cycler功能:http://matplotlib.org/devdocs/users/whats_new.html?highlight=prop_cycle#added-axes-prop-cycle-key-to-rcparams
plt.rcParams['axes.prop_cycle'] = ("cycler('color', 'rgb') +"
"cycler('lw', [1, 2, 3])")
接下来,继续创建你的坐标轴和图表吧!
133
像这样可能就能解决问题:
import matplotlib.pyplot as plt
from itertools import cycle
lines = ["-","--","-.",":"]
linecycler = cycle(lines)
plt.figure()
for i in range(10):
x = range(i,i+10)
plt.plot(range(10),x,next(linecycler))
plt.show()
结果:
更新版本说明(v2.22)
import matplotlib.pyplot as plt
from cycler import cycler
#
plt.figure()
for i in range(5):
x = range(i,i+5)
linestyle_cycler = cycler('linestyle',['-','--',':','-.'])
plt.rc('axes', prop_cycle=linestyle_cycler)
plt.plot(range(5),x)
plt.legend(['first','second','third','fourth','fifth'], loc='upper left', fancybox=True, shadow=True)
plt.show()
想要更详细的信息,可以查看matplotlib关于“使用cycler进行样式设置”的教程
要查看输出结果,请点击"显示图形"