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


数据可视化是理解和解释复杂数据的重要步骤。在众多图表类型中,条形图仍然是表示分类数据的通用且流行的选择。使用 Python(数据分析中的领先语言)和 Plotly(一个支持交互式绘图的绘图库),我们可以轻松而精确地创建和自定义条形图,包括分组条形图。

今天,我们将深入探讨使用 Plotly 在 Python 中创建分组条形图的过程。分组条形图用于比较同一轴上多个类别的系列。这种类型的图表可以提供更全面的复杂数据集的可视化表示,有助于突出显示模式、相关性和对比。

语法

使用 Plotly 的 express 函数创建分组条形图的标准语法如下:

plotly.express.bar(data_frame, x, y, color, barmode = 'group', ...)

在此语法中

  • data_frame - 这是您用作数据源的 DataFrame。

  • - DataFrame 中表示 x 轴值的列。

  • - DataFrame 中表示 y 轴值的列。

  • color - 您要用于对数据进行分组的列。

  • barmode - 对于分组条形图,这应设置为“group”。如果未指定,则默认设置为“relative”。

  • ...: 用于自定义绘图的其他参数的占位符。

算法

让我们将使用 Plotly 创建分组条形图的过程分解成简单的步骤:

  • 导入必要的库。

  • 创建或导入您的数据帧。

  • 根据您的 DataFrame 指定“x”、“y”和“color”参数。

  • 使用 plotly.express.bar() 函数创建您的绘图。

  • 将 barmode 设置为“group”。

  • 自定义您的绘图(可选)。

  • 显示您的绘图。

方法 1:从头开始创建分组条形图

假设我们有三种不同产品(A、B 和 C)在一年四个季度中的销售数据。我们希望在分组条形图中表示此数据以进行更好的比较。

示例

# Import necessary libraries
import plotly.express as px
import pandas as pd

# Create the DataFrame
data = {'Quarters': ['Q1', 'Q2', 'Q3', 'Q4'],
      'Product A': [200, 150, 100, 180],
      'Product B': [220, 130, 90, 150],
      'Product C': [210, 160, 130, 170]}

df = pd.DataFrame(data)

# Convert the DataFrame from wide to long format
df_melt = df.melt(id_vars='Quarters', var_name='Products', value_name='Sales')

# Create the grouped bar chart
fig = px.bar(df_melt, x='Quarters', y='Sales', color='Products', barmode='group')

# Show the plot
fig.show()

输出

解释

基本库组件在头两行导入。为简洁起见,我们将 plotly.express 称为 px。plotly.express 是 Plotly 库的一个简单且高级的接口。此外,我们还引入了 pandas(一个用于数据操作和分析的强大包),并将其别名为 pd。

然后,我们构造一个名为 data 的字典,它将包含三种不同产品(“A”、“B”和“C”)在四个不同季度(“Q1”到“Q4”)中的销售额的条目。然后,我们将此字典转换为 pandas DataFrame df。

melt() 函数用于将 DataFrame 从宽格式转换为长格式。id_vars 参数确定要保持不变的列,而 var_name 和 value_name 参数分别指定新生成列的名称。

在创建条形图时,调用 px.bar() 函数来完成繁重的工作。x 参数、y 参数和 color 参数分别指定 DataFrame 中的列,这些列将用于指定分组颜色、x 轴和 y 轴。为了创建分组条形图,barmode 设置为 group。

最后,通过调用 show() 函数显示绘图。

方法 2:从外部数据创建分组条形图

假设我们有一个外部 CSV 文件(“sales_data.csv”),其中包含不同地区和产品的销售数据。

示例

# Import necessary libraries
import plotly.express as px
import pandas as pd

# Load the DataFrame from an external CSV file
df = pd.read_csv('sales_data.csv')

# Create the grouped bar chart
fig = px.bar(df, x='Region', y='Sales', color='Product', barmode='group')

# Customize the plot
fig.update_layout(title_text='Sales by Product and Region',
                  xaxis_title='Region',
                  yaxis_title='Sales')

# Show the plot
fig.show()

输出

解释

我们从导入基本库开始,这与第一种方法非常相似。

在这种情况下,我们不是创建自己的 DataFrame,而是使用 pd.read_csv() 函数从外部 CSV 文件加载它,然后将数据转换为 DataFrame。

我们创建分组条形图的方式与第一种方法基本相同,区别在于我们使用新创建的 DataFrame 中的列名。

可以使用 update_layout() 函数自定义绘图。这里,我们将为绘图添加标题,并标记 x 轴和 y 轴。

最后一步是显示绘图。

结论

分组条形图对于比较同一类别中的多个数据系列非常有用。使用 Python 和 Plotly,我们可以轻松地从预先存在的或新创建的数据集中生成这些绘图。Plotly 中的自定义选项允许根据我们的特定视觉和解释需求进行调整。

请记住,数据可视化不仅仅是创建漂亮的图表;它还关系到有效地传达复杂数据。因此,务必仔细考虑图表类型、颜色方案和设计元素的选择,以确保您的数据故事尽可能清晰和有说服力。通过掌握分组条形图,您将为您的数据可视化工具箱添加一个强大的工具。祝您绘图愉快!

更新于: 2023-07-27

2K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告