擅长:python、mysql、java
<p>首先,您需要计算柱状图条形图的高度和位置。然后,您需要创建一个掩码来过滤正反数据。最后,分别绘制条形图的每个子集,并在每次调用函数<code>plt.bar()</code>时设置颜色。在</p>
<p>你的数据看起来像是假的:</p>
<pre class="lang-py prettyprint-override"><code>import matplotlib.pyplot as plt
import numpy as np
# generate fake data
N = 1000
data = np.random.normal(loc=-1, size=N) # with average -1
n_bins = 100
heights, bins, _ = plt.hist(data, bins=n_bins) # get positions and heights of bars
bin_width = np.diff(bins)[0]
bin_pos = bins[:-1] + bin_width / 2
plt.figure()
mask = (bin_pos >= 0)
# plot data in two steps
plt.bar(bin_pos[mask], heights[mask], width=bin_width, color='C1')
plt.bar(bin_pos[~mask], heights[~mask], width=bin_width, color='C0')
plt.xlabel("Relative Error [%]")
plt.ylabel("#samples")
plt.axvline(x=0, linestyle=' ',linewidth=1, color='grey')
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/7N9jq.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/7N9jq.png" alt="enter image description here"/></a></p>