在matplotlib
中,线条自动绘制颜色循环。这两个线图会有不同的颜色。
axes.plot(x1, y)
axes.plot(x2, y)
但是,条形图没有。这两个数据系列都有蓝条。
axes.bar(x1, y)
axes.bar(x2, y)
如何使条形图在预定义的一组颜色中自动循环?
答案 0 :(得分:24)
这些方面的内容会为你做些什么吗?
#!/usr/bin/python
from matplotlib import cm
import matplotlib.pyplot as plt
#data
x=[1,2,4]
y=[11,12,8]
for i in range(0,len(x)):
plt.bar(x[i],y[i],color=cm.jet(1.*i/len(x)))
plt.show()
更多关于colormaps。
编辑:请参阅this example了解如何在预定义的一组颜色上循环。
答案 1 :(得分:4)
可选 要完全控制图形的样式,请使用现有的mplstyle作为模板: https://github.com/matplotlib/matplotlib/tree/master/lib/matplotlib/mpl-data/stylelib
调整参数:axes.prop_cycle:cycler(' color',[....])
加载你的风格:
from matplotlib import style
style.use ('PATH TO YOUR MPL STYLE')
您几乎可以按照自己想要的方式循环使用默认的样式颜色循环:
#!/usr/bin/python
import matplotlib.pyplot as plt
#data
x=[1,2,4]
y=[11,12,8]
prop_iter = iter(plt.rcParams['axes.prop_cycle'])
for i in range(0,len(x)):
plt.bar(x[i],y[i],color=next(prop_iter)['color'])
plt.show()
plt.rcParams [' axes.prop_cycle']抓取所有周期,因此您需要使用键[' color']选择正确的循环仪。
您可以删除迭代器创建并使用list comprehension和zip来创建一个衬垫:
#!/usr/bin/python
import matplotlib.pyplot as plt
x=[1,2,4]
y=[11,12,8]
prop = plt.rcParams['axes.prop_cycle']
[plt.bar(param[0],param[1],color=param[2]['color']) for param in zip(x,y,prop)]
plt.show()
答案 2 :(得分:3)
来自http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.bar
的文档条形图不会自动循环颜色,但您可以通过传递颜色属性直接设置颜色。 像这样:
colors = ['red', 'blue', 'green']
i = -1
def getCycledColor():
global i, colors
if i < len(colors) -1
i = i + 1
return colors[i]
else:
i = -1
axes.bar(x1,y,facecolor=getCycledColor())
axes.bar(x2,y,facecolor=getCycledColor())
可以从预定义列表中选择颜色并循环显示。