# Annotation in reality

## Simple one

```
import numpy as np
import pylab

x = np.arange(0.0, 5.0, 0.01)
y = np.sin(x)
pylab.plot(x, y)

pylab.annotate('a point', xy=(0, 0), xytext=(1, 0), arrowprops=dict(facecolor='black', shrink=0.05))

pylab.show()
```

![](https://678042047-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Le4Kw7aXTv8Say69hfT%2F-Le4Ky20EiLyi7Fs0_LO%2F-Le4KzxJr0-3kGGHogLw%2Fannotation.png?generation=1557015298935123\&alt=media)

## Complex one

```
import numpy as np
import pylab

x = np.arange(- np.pi * 2, np.pi * 2, 0.1)
y = np.sin(x)
pylab.plot(x, y, color='blue')

def draw_horizontal_line(x, y, length):
    unit = 0.1
    line_x = np.arange(x-length, x+length+unit, unit)
    line_y = np.linspace(y, y, num=len(line_x))
    # line_y = np.array([y for i in range(len(line_x))])
    pylab.plot(line_x, line_y, color='red')

# draw local maximum
draw_horizontal_line(np.pi/2, 1, 2)
pylab.annotate('local maximum', xy=(np.pi/2, 1), xytext=(np.pi/2+1, 2), arrowprops=dict(facecolor='black', shrink=0.05))

# draw local minimum
draw_horizontal_line(-np.pi/2, -1, 2)
pylab.annotate('local minimum', xy=(-np.pi/2, -1), xytext=(-np.pi/2-4, -2), arrowprops=dict(facecolor='black', shrink=0.05))

# draw global maximum
x = np.arange(6.0, 7.5, 0.1)
pylab.plot(x+(np.pi-3)*2, x-6, color='blue')
draw_horizontal_line(7.5, 7.4-6, 2)
pylab.annotate('global maximum', xy=(8.0, 7.3-6), xytext=(8.7, 0), arrowprops=dict(facecolor='black', shrink=0.05))

pylab.ylim(-2.5, 2.5)
pylab.xlim(-8, 14)
pylab.show()
```

![](https://678042047-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Le4Kw7aXTv8Say69hfT%2F-Le4Ky20EiLyi7Fs0_LO%2F-Le4KzxV3FfkjIABa_6D%2Fannotation_for_real.png?generation=1557015298923099\&alt=media)
