I have two arrays like so:
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]
I'm trying to get these into a Seaborn pointplot like so:
%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)
I get a pointplot like so:
This plot is almost what I want. How do I get the data labels of each of the points to show above the respective points?
I tried ax.patches
, but it is empty.
I'm trying to get it look like this (but for the pointplot):
Show point estimates and errors using dot marks. A point plot represents an estimate of central tendency for a numeric variable by the position of the dot and provides some indication of the uncertainty around that estimate using error bars.
annotate() to label a single point. Call matplotlib. pyplot. annotate(s, xy) to add a label string s to a point, where xy is a tuple of the point coordinates.
If we want to explicitly add a legend, we can use the legend() function from the matplotlib library. In this way, we can add our own labels explicitly. Note that the seaborn library is based on and uses the matplotlib module to create its graphs. So we can use the legend() function for seaborn plots as well.
you can do it this way:
[ax.text(p[0], p[1]+50, p[1], color='g') for p in zip(ax.get_xticks(), num_records_yob)]
For future reference that will want a more general answer I suggest this code:
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)
Note that I also changed the comprehension to a for loop, I think it is more readable that way (when the list is actually thrown away)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With