【问题标题】:Seaborn bar plot with regression line query带有回归线查询的 Seaborn 条形图
【发布时间】:2021-09-19 00:06:03
【问题描述】:

我正在尝试生成带有回归线的条形图。我正在尝试遵循先前针对同一问题的建议,但收到一条我无法克服的错误消息。我的脚本如下:

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()

我得到的错误信息是:

Traceback (most recent call last):

  File "C:\Users\david\AppData\Local\Programs\Spyder\pkgs\IPython\core\async_helpers.py", line 68, in _pseudo_sync_runner
    coro.send(None)

  File "C:\Users\david\AppData\Local\Programs\Spyder\pkgs\IPython\core\interactiveshell.py", line 3162, in run_cell_async
    self.displayhook.exec_result = result

  File "C:\Users\david\AppData\Local\Programs\Spyder\pkgs\traitlets\traitlets.py", line 604, in __set__
    self.set(obj, value)

  File "C:\Users\david\AppData\Local\Programs\Spyder\pkgs\traitlets\traitlets.py", line 578, in set
    new_value = self._validate(obj, value)

  File "C:\Users\david\AppData\Local\Programs\Spyder\pkgs\traitlets\traitlets.py", line 610, in _validate
    value = self.validate(obj, value)

  File "C:\Users\david\AppData\Local\Programs\Spyder\pkgs\traitlets\traitlets.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

但我不确定这意味着什么。有人可以帮忙吗?

【问题讨论】:

  • 请添加完整的错误跟踪。特别是因为看起来错误可能与脚本的绘图部分无关......事实上,运行您的代码我在sns.set 行上遇到错误。这可能是模块版本的问题,但仍然不是您报告的错误。
  • 感谢您的快速回复。我现在将编辑问题。
  • 正如怀疑的那样,错误似乎指向代码的不同部分。您确定单独运行此代码会产生该错误吗?再次 - 运行您发布的 sn-p 时出现不同的错误
  • 是的,我不认为我在升级 python 包后安装了 seaborn 模块。执行此操作后,我的错误消失了。谢谢,这帮助我意识到了这一点。

标签: python pandas numpy regression


【解决方案1】:

请确保您在df 中提供intfloat

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()

【讨论】:

  • 谢谢,问题解决了!你知道我需要在代码中更改什么来制作适合数据而不是直线的曲线吗?
  • 您能接受吗,但单击此建议的tick 按钮可解决您的问题。请为此特定请求打开一个新帖子并在上面标记我
  • 感谢您的帮助。我现在勾选了它并提出了一个新问题,但我不确定如何标记你。
猜你喜欢
  • 2017-11-05
  • 2018-07-28
  • 2020-08-17
  • 1970-01-01
  • 2019-01-23
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
相关资源
最近更新 更多