.annotate()没有绘制所有标签

时间:2016-07-08 00:37:36

标签: python pandas matplotlib scatter-plot

我创建了一个包含库存信息的数据框。当我去创建散点图和注释标签时,并不包括所有标签。我只得到50分左右的3个标签。我无法弄清楚为什么它没有绘制所有标签。

我的表:

        Dividend  ExpenseRatio  Net_Assets  PriceEarnings  PriceSales
Ticker
FHLC      0.0128          0.08       6.056          22.95        1.78
ONEQ      0.0083          0.21       6.284          20.24        2.26
FTEC      0.0143          0.08       3.909          20.83        2.73
FDIS      0.0144          0.08       2.227          20.17        1.36
FENY      0.0262          0.08       4.386          25.97        1.34

我的密码:

for ticker,row in df.iterrows():    
    plt.scatter(row['PriceSales'], row['PriceEarnings'], c = np.random.rand(3,1), s = 300)


for i, txt in enumerate(ticker):
    plt.annotate(df.index[i-1], (df.PriceSales[i-1], df.PriceEarnings[i-1]))

plt.xlabel('PriceSales')
plt.ylabel('PriceEarnings')  
plt.show() 

我的图片图片:

enter image description here

1 个答案:

答案 0 :(得分:2)

这里的自动收报机将具有最后一行的股票代码的值;例如,“FENY”。当你调用enumerate(ticker)时,它会为每个char生成一个项目,所以听起来你最后一个自动收报机有3个条目。

我认为你可以在与散点图相同的循环中注释点:

for ticker,row in df.iterrows():    
    plt.scatter(row['PriceSales'], row['PriceEarnings'], c = np.random.rand(3,1), s = 300)
    plt.annotate(ticker, (row['PriceSales'], row['PriceEarnings']))