📜  如何在 Python-Plotly 中对条形图进行分组?(1)

📅  最后修改于: 2023-12-03 15:08:45.999000             🧑  作者: Mango

如何在 Python-Plotly 中对条形图进行分组?

如果你需要在 Python 中展示一个有分组的条形图,Python-Plotly 应该是一个不错的选择。在 Python-Plotly 中,可以通过 go.Bar 对象来创建分组的条形图。

准备数据

首先,我们需要准备一些数据。下面是一个例子:

import pandas as pd

df = pd.DataFrame({
    'name': ['John', 'Mary', 'Tom', 'Jerry', 'Alice', 'Bob', 'Karen', 'Steven', 'Tony'],
    'group': ['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'D'],
    'value': [12, 18, 21, 15, 22, 16, 19, 25, 28]
})

这里的 df 数据框中包含了每个人的名字、所属的分组以及对应的数值。

>>> print(df)
     name group  value
0    John     A     12
1    Mary     A     18
2     Tom     B     21
3   Jerry     B     15
4   Alice     C     22
5     Bob     C     16
6   Karen     D     19
7  Steven     D     25
8    Tony     D     28
创建图表

接下来,我们可以使用 go.Bar 对象来创建分组的条形图。需要注意的是,在 Plotly 中,一个条形图通常包含一个或多个 trace,而 trace 可以理解为一个数据系列。每个 trace 对应一组数据,因此,如果我们要创建分组的条形图,我们需要为每个分组创建一个 trace

下面是实现分组条形图的代码:

import plotly.graph_objs as go

fig = go.Figure()

groups = df['group'].unique()

for group in groups:
    data = df[df['group'] == group]
    fig.add_trace(go.Bar(x=data['name'], y=data['value'], name=group))

fig.update_layout(barmode='group')
fig.show()

首先,我们使用 df['group'].unique() 获取了所有分组的名称,然后对于每个分组,我们创建一个 trace 并添加到图表中。在创建 trace 时,我们将 x 轴设置为每个人的名字,y 轴设置为对应的数值,name 属性设置为分组的名称。

最后,我们通过 fig.update_layout(barmode='group') 将图表设置为分组模式,使得条形图可以按分组进行展示。

结论

上述代码将会创建一个分组的条形图,其中每个条形图表示一个分组。该条形图就像下面这样:

Python-Plotly 分组条形图

代码片段:

## 准备数据

```python
import pandas as pd

df = pd.DataFrame({
    'name': ['John', 'Mary', 'Tom', 'Jerry', 'Alice', 'Bob', 'Karen', 'Steven', 'Tony'],
    'group': ['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'D'],
    'value': [12, 18, 21, 15, 22, 16, 19, 25, 28]
})
创建图表
import plotly.graph_objs as go

fig = go.Figure()

groups = df['group'].unique()

for group in groups:
    data = df[df['group'] == group]
    fig.add_trace(go.Bar(x=data['name'], y=data['value'], name=group))

fig.update_layout(barmode='group')
fig.show()

可视化图表: Python-Plotly 分组条形图