<p>这个解决方案比@user2699的要复杂一点。我只是为了完整性而展示它。您可以完全控制<code>hist</code>返回的面片对象,因此,如果您可以确保所使用的阈值正好位于bin边上,则很容易更改为选定面片的颜色。之所以可以这样做,是因为<code>hist</code>可以接受一系列bin边作为<code>bins</code>参数。在</p>
<pre><code>import numpy as np
from matplotlib import pyplot as plt
# Make sample data
finalutilityrange = np.random.randn(100)
discreetlevel = 10
deter = 0.2
# Manually create `discreetlevel` bins anchored to `deter`
binsAbove = round(discreetlevel * np.count_nonzero(finalutilityrange > deter) / finalutilityrange.size)
binsBelow = discreetlevel - binsAbove
binwidth = max((finalutilityrange.max() - deter) / binsAbove,
(deter - finalutilityrange.min()) / binsBelow)
bins = np.concatenate([
np.arange(deter - binsBelow * binwidth, deter, binwidth),
np.arange(deter, deter + (binsAbove + 0.5) * binwidth, binwidth)
])
# Use the bins to make a single histogram
h, bins, patches = plt.hist(finalutilityrange, bins, color='b')
# Change the appropriate patches to red
plt.setp([p for p, b in zip(patches, bins) if b >= deter], color='r')
</code></pre>
<p>结果是一个同质直方图,包含不同颜色的箱子:</p>
<p><a href="https://i.stack.imgur.com/o31K4.png" rel="nofollow"><img src="https://i.stack.imgur.com/o31K4.png" alt="enter image description here"/></a></p>
<p>箱子可能会比你没有锚定到<code>deter</code>稍微宽一点。第一个或最后一个bin通常会稍微超过数据的边缘。在</p>