擅长:python、mysql、java
<p>(请参阅我的另一个答案,以获得更快的解决方案。)</p>
<p>Matplotlib提供垂直的“stem”条:<a href="http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.stem" rel="nofollow noreferrer">http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.stem</a>。但是,我找不到<code>stem()</code>的水平等价物。</p>
<p>尽管如此,通过多次调用(每个调用一个),仍然可以很容易地绘制水平杆。下面是一个例子</p>
<pre><code>import numpy
from matplotlib.pyplot import plot
x_arr = numpy.random.random(10)-0.5; y_arr = numpy.arange(10)
# Stems:
for (x, y) in zip(x_arr, y_arr):
plot([0, x], [y, y], color='red')
# Stem ends:
plot(x_arr, y_arr, 'D')
# Middle bar:
plot([0, 0], [y_arr.min(), y_arr.max()], '--')
</code></pre>
<p>结果如下:</p>
<p><img src="https://i.stack.imgur.com/JPa3W.png" alt="Plot with horizontal stem bars"/></p>
<p>但是,请注意,当x在对数刻度上时,从x=0绘制条线是没有意义的,正如David Zwicker指出的,因为x=0在x轴的左侧是无限远的。</p>