2017-03-09 110 views
1
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 我在tableau中做了這個,我想在python中複製它。 另外,請讓我知道是否有更好的編碼方式。matplotlib barh圖上的圓點

我使用Python的蟒蛇3.5,Matplotlib庫時,Windows 10,Idlex IDE

回答

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

參見實施例