当我为直方图着色时,它接受不同颜色的列表,但是,对于阴影而言,它仅接受一个值。

这是代码:

import numpy as np
import matplotlib.pylab as plt


data = [np.random.rand(100) + 10 * i for i in range(3)]
ax1 = plt.subplot(111)

n, bins, patches = ax1.hist(data, 20, histtype='bar',
                        color=['0', '0.33', '0.66'],
                        label=['normal I', 'normal II', 'normal III'],
                        hatch= ['', 'o', '/'])

对于不同的系列我该如何使用不同的阴影?

最佳答案

不幸的是,看起来hist并没有为多系列图支持多个剖面线。但是,您可以通过以下方法解决此问题:

import numpy as np
import matplotlib.pylab as plt

data = [np.random.rand(100) + 10 * i for i in range(3)]
ax1 = plt.subplot(111)

n, bins, patches = ax1.hist(data, 20, histtype='bar',
                        color=['0', '0.33', '0.66'],
                        label=['normal I', 'normal II', 'normal III'])

hatches = ['', 'o', '/']
for patch_set, hatch in zip(patches, hatches):
    for patch in patch_set.patches:
        patch.set_hatch(hatch)
patches返回的对象histBarContainer对象的列表,每个对象都包含一组Patch对象(在BarContainer.patches中)。因此,您可以访问每个修补程序对象并显式设置其填充。

或正如@MadPhysicist指出的那样,您可以在每个plt.setp上使用patch_set,这样循环可以缩短为:
for patch_set, hatch in zip(patches, hatches):
    plt.setp(patch_set, hatch=hatch)

10-07 16:34