2016-05-09 13 views
5

Ich habe zwei Arrays wie folgt:Wie erhält man Datenetiketten auf einem Seaborn-Pointplot?

Soldier_years = [1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870] 
num_records_yob = [7, 5, 8, 9, 15, 17, 23, 19, 52, 55, 73, 73, 107, 137, 65, 182, 228, 257, 477, 853, 2303] 

Ich versuche, diese in eine Seaborn pointplot zu erhalten wie folgt:

%matplotlib inline 
import seaborn as sns 
import matplotlib.pyplot as plt 
sns.set(style="darkgrid") 

f, (ax) = plt.subplots(figsize=(12, 6), sharex=True) 

sns.set_style("darkgrid") 
ax = sns.pointplot(x=Soldier_years, y=num_records_yob) 

ich ein pointplot wie erhalten so:

Pointplot

Diese Handlung ist fast das, was ich will. Wie bekomme ich die Datenbeschriftungen der einzelnen Punkte über den jeweiligen Punkten angezeigt?

Ich versuchte ax.patches, aber es ist leer.

Ich versuche es so (aber für die pointplot) schauen zu bekommen: enter image description here

Antwort

5

Sie es auf diese Weise tun können:

[ax.text(p[0], p[1]+50, p[1], color='g') for p in zip(ax.get_xticks(), num_records_yob)] 

plot

+0

Vielen Dank, guter Herr! – lostsoul29

0

Für die Zukunft, dass werde eine allgemeinere Antwort wünschen Ich schlage diesen Code vor:

ymin, ymax = ax.get_ylim() 
color="#3498db" # choose a color 
bonus = (ymax - ymin)/50 # still hard coded bonus but scales with the data 
for x, y, name in zip(X, Y, names): 
    ax.text(x, y + bonus, name, color=color) 

Beachten Sie, dass ich auch das Verständnis in eine for-Schleife geändert habe, denke ich, dass es lesbarer ist (wenn die Liste tatsächlich weggeworfen wird)

Verwandte Themen