如何使条形图自动循环不同的颜色?

Kit*_*Kit 15 python plot color-scheme colors matplotlib

matplotlib,线条图自动颜色循环.这两个线图将具有不同的颜色.

axes.plot(x1, y)
axes.plot(x2, y)
Run Code Online (Sandbox Code Playgroud)

但是,条形图没有.这两个数据系列都有蓝条.

axes.bar(x1, y)
axes.bar(x2, y)
Run Code Online (Sandbox Code Playgroud)

如何使条形图在预定义的一组颜色中自动循环?

ev-*_*-br 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()
Run Code Online (Sandbox Code Playgroud)

有关彩色地图的更多信息.

编辑:请参阅此示例,了解如何在预定义的一组颜色上循环.


小智 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')
Run Code Online (Sandbox Code Playgroud)

您几乎可以以任何您想要的方式循环您的或默认样式颜色循环:

#!/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()
Run Code Online (Sandbox Code Playgroud)

plt.rcParams['axes.prop_cycle'] 获取所有循环,因此您需要使用键 ['color'] 选择正确的循环器。

您可以放弃迭代器创建并使用列表理解和 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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述