2016-07-08 10 views
0

Ich habe einen Datenrahmen mit Lagerinformationen erstellt. Wenn ich ein Streudiagramm erzeuge und Beschriftungen annotiere, sind nicht alle Beschriftungen enthalten. Ich bekomme nur 3 Etiketten von 50 oder so Punkten. Ich kann nicht herausfinden, warum nicht alle Etiketten geplottet werden..annotate() zeichnet nicht alle Etiketten

My Table:

 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 

Mein Plotten Code:

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() 

Mein Diagramm Bild:

enter image description here

Antwort

2

Ticker hier wird den Wert des Tickers haben die letzte Reihe; z.B. "FENY". Wenn Sie enumerate (Ticker) aufrufen, wird ein Element für jedes Zeichen generiert, so dass es sich anhört, als ob Ihr letzter Ticker 3 Einträge hat.

Ich glaube, Sie in der gleichen Schleife wie das Streudiagramm mit Anmerkungen versehen können:

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'])) 
+0

es in der Schleife Arbeitern Einschließlich. Ich kann nicht glauben, dass ich nicht darüber nachgedacht habe, aber danke für die Lösung! – Evy555