I am trying to produce a bar plot with a line of regression. I am trying to follow a previous suggestion for the same problem but get an error message that I am unable to overcome. My script is as follows:
import seaborn.apionly as sns
import matplotlib.pyplot as plt
import pandas as pd
sns.set(style="white", context="score")
data = {'Days': ['5', '10', '15', '20'],
'Impact': ['33.7561', '30.6281', '29.5748', '29.0482']
}
a = pd.DataFrame (data, columns = ['Days','Impact'])
print (a)
ax = sns.barplot(data=a, x=a.Days, y=a.Impact, color='lightblue' )
# put bars in background:
for c in ax.patches:
c.set_zorder(0)
# plot regplot with numbers 0,..,len(a) as x value
sns.regplot(x=np.arange(0,len(a)), y=a.Impact, ax=ax)
sns.despine(offset=10, trim=False)
ax.set_ylabel("")
ax.set_xticklabels(['5', '10','15','20'])
plt.show()
The error message I get is:
Traceback (most recent call last):
File "C:UsersdavidAppDataLocalProgramsSpyderpkgsIPythoncoreasync_helpers.py", line 68, in _pseudo_sync_runner
coro.send(None)
File "C:UsersdavidAppDataLocalProgramsSpyderpkgsIPythoncoreinteractiveshell.py", line 3162, in run_cell_async
self.displayhook.exec_result = result
File "C:UsersdavidAppDataLocalProgramsSpyderpkgstraitletstraitlets.py", line 604, in __set__
self.set(obj, value)
File "C:UsersdavidAppDataLocalProgramsSpyderpkgstraitletstraitlets.py", line 578, in set
new_value = self._validate(obj, value)
File "C:UsersdavidAppDataLocalProgramsSpyderpkgstraitletstraitlets.py", line 610, in _validate
value = self.validate(obj, value)
File "C:UsersdavidAppDataLocalProgramsSpyderpkgstraitletstraitlets.py", line 1842, in validate
if isinstance(value, self.klass):
TypeError: isinstance() arg 2 must be a type or tuple of types
ERROR! Session/line number was not unique in database. History logging moved to new session 54
but I am not sure what this means. Can anyone help?
Advertisement
Answer
Please ensure you supply int or float in the df
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
data = {'Days': [5, 10, 15, 20],
'Impact': [33.7561, 30.6281, 29.5748, 29.0482]
}
a = pd.DataFrame (data, columns = ['Days','Impact'])
print (a)
ax = sns.barplot(data=a, x='Days', y='Impact', color='lightblue' )
# put bars in background:
for c in ax.patches:
c.set_zorder(0)
# plot regplot with numbers 0,..,len(a) as x value
ax = sns.regplot(x=np.arange(0,len(a)), y=a['Impact'], marker="+")
sns.despine(offset=10, trim=False)
ax.set_ylabel("")
ax.set_xticklabels(['5', '10','15','20'])
plt.show()
