# Exponential Fit in Python/v3

Create a exponential fit / regression in Python and add a line of best fit to your chart.

See our Version 4 Migration Guide for information about how to upgrade.

#### New to Plotly?¶

You can set up Plotly to work in online or offline mode, or in jupyter notebooks.
We also have a quick-reference cheatsheet (new!) to help you get started!

#### Version Check¶

Note: exponential fits are available in version 1.9.2+
Run pip install plotly --upgrade to update your Plotly version

In :
import plotly
plotly.__version__

Out:
'1.12.12'

### Exponential Fit¶

In :
# Learn about API authentication here: https://plotly.com/python/getting-started
# Find your api_key here: https://plotly.com/settings/api

import plotly.plotly as py
import plotly.graph_objs as go

# Scientific libraries
import numpy as np
from scipy.optimize import curve_fit

x = np.array([399.75, 989.25, 1578.75, 2168.25, 2757.75, 3347.25, 3936.75, 4526.25, 5115.75, 5705.25])
y = np.array([109,62,39,13,10,4,2,0,1,2])

def exponenial_func(x, a, b, c):
return a*np.exp(-b*x)+c

popt, pcov = curve_fit(exponenial_func, x, y, p0=(1, 1e-6, 1))

xx = np.linspace(300, 6000, 1000)
yy = exponenial_func(xx, *popt)

# Creating the dataset, and generating the plot
trace1 = go.Scatter(
x=x,
y=y,
mode='markers',
marker=go.Marker(color='rgb(255, 127, 14)'),
name='Data'
)

trace2 = go.Scatter(
x=xx,
y=yy,
mode='lines',
marker=go.Marker(color='rgb(31, 119, 180)'),
name='Fit'
)

annotation = go.Annotation(
x=2000,
y=100,
text='$\textbf{Fit}: 163.56e^{-0.00097x} - 1.16$',
showarrow=False
)
layout = go.Layout(
title='Exponential Fit in Python',
plot_bgcolor='rgb(229, 229, 229)',
xaxis=go.XAxis(zerolinecolor='rgb(255,255,255)', gridcolor='rgb(255,255,255)'),
yaxis=go.YAxis(zerolinecolor='rgb(255,255,255)', gridcolor='rgb(255,255,255)'),
annotations=[annotation]
)

data = [trace1, trace2]
fig = go.Figure(data=data, layout=layout)

py.plot(fig, filename='Exponential-Fit-in-python')

Out:
u'https://plotly.com/~PythonPlotBot/164' 