<p>我不太清楚你到底在找什么,所以如果你还需要什么,请告诉我。在</p>
<p>我使用pandas为图形创建一些虚拟数据和matplotlib。在</p>
<pre><code>import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'current':[3,4,7], 'minimum':[1,3,2], 'maximum':[10,14,11], 'average':[8,5,9]})
# average current maximum minimum
#0 8 3 10 1
#1 5 4 14 3
#2 9 7 11 2
</code></pre>
<p>现在是重要的部分。我从图片中重现了你的例子。这个循环迭代数据帧中的每一行,也就是公司。结果就是你有多少个公司就有多少个图表。在</p>
<ul>
<li><code>ax.plot</code>创建一条从<code>minimum</code>值到
<code>maximum</code>值。在</li>
<li><code>ax.scatter</code>为<code>current</code>和<code>average</code>值创建点。在</li>
</ul>
<p>当然,您必须稍微调整图形,使其看起来像您希望的那样。在</p>
^{pr2}$
<p>这是第一家公司的图表。
<a href="https://i.stack.imgur.com/QbwDo.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/QbwDo.png" alt="enter image description here"/></a></p>
<p><strong>编辑(参见@Andrea的评论):</strong>将绘制的数据放在一起</p>
<p>您可以按照上面的方法,但调整图形的样式。在</p>
<pre><code>for index,row in df.iterrows():
fig, ax = plt.subplots(figsize=(7, 0.2)) # adjust the width and height of the graphs
ax.plot([df['minimum'][index],df['maximum'][index]],[0,0],color='gray',zorder=0)
ax.scatter(df['current'][index],0,zorder=1)
ax.scatter(df['average'][index],0,marker='D',zorder=2)
plt.xticks([]) # disable the ticks of the x-axis
plt.yticks([]) # disable the ticks of the y-axis
for spine in plt.gca().spines.values(): # disable the border around the graphs
spine.set_visible(False)
</code></pre>
<p>这看起来很接近你在问题中发布的图片。
<a href="https://i.stack.imgur.com/VOY2J.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/VOY2J.jpg" alt="enter image description here"/></a></p>