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

pythonplotlyserver side programmingprogramming

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

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

语法

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

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

在此语法中:

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

  • - The column in your DataFrame that represents the x-axis values.

  • - The column in your DataFrame that represents the y-axis values.

  • color - The column that you want to use to group your data.

  • barmode - This should be set to 'group' for grouped bar charts. If not specified, the default setting is 'relative'.

  • ...: Placeholder for additional parameters to customize your plot.

算法

让我们将 Plotly 中创建分组条形图的过程分解为几个简单步骤:

  • 导入必要的库。

  • 创建或导入数据框。

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

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

  • 将 barmode 设置为"group"。

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

  • 显示您的图。

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

假设我们有一年四个季度三种不同产品(A、B 和 C)的销售数据。我们希望将这些数据以分组条形图的形式表示出来,以便更好地进行比较。

示例

# 导入必要的库
import plotly.express as px
import pandas as pd

# 创建 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)

# 将 DataFrame 从宽格式转换为长格式
df_melt = df.melt(id_vars='Quarters', var_name='Products', value_name='Sales')

# 创建分组条形图
fig = px.bar(df_melt, x='Quarters', y='Sales', color='Products', barmode='group')

# 显示图表
fig.show()

输出

说明

前两行引入了必要的库组件。为简洁起见,我们将 plotly.express 称为 px。 plotly.express 是 Plotly 程序的一个简单而高级的接口。此外,我们引入了 pandas,这是一个强大的数据操作和分析包,我们用它的别名 pd 来引用它。

然后,我们构建一个字典,我们将其称为数据,它将包含三个不同项目("A"、"B"和"C")的销售条目,涵盖四个不同的季度("Q1"到"Q4")。之后,我们将这个字典转换为 pandas DataFrame df。

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

在创建条形图时,px.bar() 方法被调用来完成艰苦的工作。x 参数、y 参数和类型参数分别表示 DataFrame 中的列,这些列将分别用于表示组色调、x 轴和 y 轴。为了制作分组条形图,将 barmode 更改为 group 设置。

通过最后一次调用 show() 函数来呈现图表。

方法 2:来自外部数据的分组条形图

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

示例

# 导入必要的库
import plotly.express as px
import pandas as pd

# 从外部 CSV 文件加载 DataFrame
df = pd.read_csv('sales_data.csv')

# 创建分组条形图
fig = px.bar(df, x='Region', y='Sales', color='Product', barmode='group')

# 自定义图表
fig.update_layout(title_text='Sales by Product and Region',
                  xaxis_title='Region',
                  yaxis_title='Sales')

# 显示图表
fig.show()

输出

解释

导入基本库是我们开始的地方,就像我们在主要方式中所做的一样。

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

我们以与主要方法几乎相同的方式创建聚合条形图,特殊情况是我们使用与我们刚刚创建的 DataFrame 不同的段名称。

可以使用 update_layout() 函数自定义图表。现在,我们将为图表添加标题,然后标记 x 轴和 y 轴。

最后一步,将绘制图表。

结论

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

请记住,视觉数据分析不仅仅是制作漂亮的图表;它还涉及真正传达复杂的信息。因此,在选择图表类型、多样性计划和计划元素时要仔细考虑,以确保您的数据故事尽可能清晰和令人信服。通过掌握分组条形图,您将为数据可视化工具箱添加一个强大的工具。祝您绘图愉快!


相关文章