在matplotlib barh图上的圆点

时间:2017-03-09 22:57:00

标签: matplotlib python-3.5

import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({'y':['a','b','c','d','e','f','g','h','i']\
                       ,'x':[10,9,9,8,7,6,10,6,7]})
df.sort_values(by='x',inplace=True,ascending = True)

plt.barh(bottom=list(range(1,10)), width=df.x, height = 0.15, align='center',color = 'blue')
plt.xlim([0,11])
plt.yticks(list(range(1,10)),skills.y)
plt.show()

这段代码给了我一个水平条形图。 我想在每个条的边缘添加一个圆点。 有人可以帮助我。 Tableau graph 我在画面中这样做了,我想在python中复制它。 另外,如果有更好的编码方式,请告诉我。

我使用的是Anaconda Python 3.5,Matplotlib库,Windows 10,Idlex IDE

1 个答案:

答案 0 :(得分:2)

您可以使用matplotlib scatter函数在条形图的顶部添加散点图。

另请注意,您可以使用numpy.arange函数生成x值,而不是当前的list(range(1,10))

见下面的例子

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.DataFrame({'y':['a','b','c','d','e','f','g','h','i'],
                   'x':[10,9,9,8,7,6,10,6,7]})

df.sort_values(by='x',inplace=True,ascending = True)

plt.barh(bottom=np.arange(len(df)), width=df.x, height = 0.15, align='center',color = 'blue')
plt.scatter(df.x.values, y=np.arange(df.shape[0]), color='b', s=40)
plt.xlim([0,11])
plt.yticks(np.arange(len(df)),df.y)
plt.show()

img