如何使用matplotlib为所有子图设置默认颜色周期?

时间:2012-02-22 15:39:32

标签: python matplotlib colors

如何为使用matplotlib制作的图设置一组默认颜色?我可以像这样设置一个特定的颜色图

import numpy as np
import matplotlib.pyplot as plt

fig=plt.figure(i)
ax=plt.gca()
colormap = plt.get_cmap('jet')
ax.set_color_cycle([colormap(k) for k in np.linspace(0, 1, 10)])

但是有没有办法为所有绘图设置相同的颜色集,包括子图?

3 个答案:

答案 0 :(得分:68)

当然!可以specify axes.color_cycle in your .matplotlibrc file使用matplotlib.rcParamsmatplotlib.rc在运行时设置它。

作为后者的一个例子:

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

# Set the default color cycle
mpl.rcParams['axes.color_cycle'] = ['r', 'k', 'c']

# Alternately, we could use rc:
# mpl.rc('axes', color_cycle=['r','k','c'])

x = np.linspace(0, 20, 100)

fig, axes = plt.subplots(nrows=2)

for i in range(10):
    axes[0].plot(x, i * (x - 10)**2)

for i in range(10):
    axes[1].plot(x, i * np.cos(x))

plt.show()

enter image description here

答案 1 :(得分:39)

从matplotlib 1.5开始,不推荐使用mpl.rcParams [' axes.color_cycle']。你应该使用axes.prop_cycle:

angular.module('vehiclesApp').directive('drDuplicate', function() {

  return {
    restrict: 'A',
    //scope: true,
    require: 'ngModel',
    link: function(scope, elem, attrs, ctrl) {
      ctrl.$validators.duplicate = function(modelValue) {

        //console.log(modelValue);
        //console.log(scope.rows);
        //return modelValue % 2 === 1;
        //return modelValue.length > 1;

        //if(scope.rows.length > 1) {
        //  var arr = [];
        //  for(j=0, i=1; i<=scope.rows.length; i++, j++) {
        //    //if(scope.rows[j].vrm != '') {
        //      arr.push(scope.rows[j].vrm);
        //    //}
        //  }
        //}
        //console.log(arr);
      };
    }
  };
});

答案 2 :(得分:0)

在2.1.0版本中,以下内容对我有效,使用set_prop_cycle和模块循环器

from cycler import cycler
custom_cycler = (cycler(color=['r','b','m','g']))
ax.set_prop_cycle(custom_cycler)

您可以添加其他行属性

custom_cycler = (cycler(color=['r','b','m','g']) + cycler(lw=[1,1,1,2]))

'ax'来自ax = plt.axes()或任何轴生成器