在matplotlib中将条形图转换为点图?

3 python matplotlib

给出以下水平条形图:

import matplotlib.pyplot as plt
from numpy import *
from scipy import *
bars = arange(5) + 0.1
vals = rand(5)
print bars, vals
plt.figure(figsize=(5,5), dpi=100)
spines = ["bottom"]
ax = plt.subplot(1, 1, 1)
for loc, spine in ax.spines.iteritems():
  if loc not in spines:
    spine.set_color('none')
# don't draw ytick marks
#ax.yaxis.set_tick_params(size=0)
ax.xaxis.set_ticks_position('bottom')
plt.barh(bars, vals, align="center")
plt.savefig("test.png") 
Run Code Online (Sandbox Code Playgroud)

如何更改,以便在顶部只有带有标记(例如"o")的虚线而不是条形图?如点图所示.谢谢.

joa*_*uin 6

不确定你的问题.你只需要改变:

plt.barh(bars, vals, align="center")
Run Code Online (Sandbox Code Playgroud)

plt.plot(vals, bars, 'o--')
Run Code Online (Sandbox Code Playgroud)

OP澄清后编辑:如果您想要水平线,请使用:

plt.plot(vals, bars, 'o')
plt.hlines(bars, [0], vals, linestyles='dotted', lw=2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述