Seaborn,条形图中的总时间如何?

Seaborn, how sum time in barplot?

pandas 输出:

          name                     type                 value
0         Town_1                  serv_time           8 days 07:14:44
1         Town_2                  serv_time           0 days 16:46:35
2         Town_3                  serv_time           0 days 22:39:27
3         Town_4                  serv_time           0 days 02:36:56
4         Town_5                  serv_time           0 days 11:17:45
[2022-04-01 15:18:22][ERROR] - Neither the `x` nor `y` variable appears to be numeric.

以及 python:

Plot(
        type='bar',
        data=new_data,
        x='value',
        hue='type',
        y='name',
        style='whitegrid',

    )


def __create_bar(self):
    sns.set_palette('Set2')
    sns.despine()

    plot = sns.barplot(ax=self.ax, x=self.x, y=self.y, hue=self.hue, data=self.data)
    self.__set_legends()
    if self.show:
        return plt.show()
    return self.__save(plot)

我正在尝试在 seaborn 中绘制条形图,但出现数字错误。如何在 barplot seaborn 中使用求和时间值?

要在 seaborn 中做一个 bar plot 需要足够的数据。

问题中没有足够的数据让 seaborn 执行此操作。 特别是错误消息指出 xy 需要是数字 !

Neither the `x` nor `y` variable appears to be numeric.

一个可行的例子:

import pandas as pd
import seaborn as sns

sns.set_theme(style="whitegrid")
d = {'name':['town_1', 'town_2', 'town_3', 'town_4'],
    'value A':[8, 0, 0.5, 1],
    'value B':[2, 4, 6, 8]}
df = pd.DataFrame(d)


ax = sns.barplot(x='name', y='value A',data=df)

结果:

     name  value A  value B
0  town_1      8.0        2
1  town_2      0.0        4
2  town_3      0.5        6
3  town_4      1.0        8

您需要将值系列转换为数字数据类型才能绘制它。

例如,假设该值具有 timedelta 数据类型。您可以在数据框中创建另一列。

new_data['value_seconds'] = new_data.value.dt.total_seconds()

Plot(
        type='bar',
        data=new_data,
        x='value_seconds',
        hue='type',
        y='name',
        style='whitegrid',

    )