📅  最后修改于: 2023-12-03 15:08:45.999000             🧑  作者: Mango
如果你需要在 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
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()
可视化图表: