如何在 Python-Plotly 中对条形图进行分组?
可视化数据是理解和解释复杂数据的关键步骤。在众多图表类型中,条形图仍然是表示分类数据的多功能且流行的选择。使用 Python(一种领先的数据分析语言)和 Plotly(一个支持交互式绘图的图形库),我们可以非常轻松和精确地创建和自定义条形图(包括分组条形图)。
今天,我们深入研究使用 Plotly 在 Python 中创建分组条形图的过程。在跨同一轴比较多个类别系列时使用分组条形图。这种图表类型可以提供复杂数据集的更全面的视觉表示,有助于突出显示模式、相关性和对比。
语法
使用 Plotly 的 express 函数创建分组条形图的标准语法如下:
plotly.express.bar(data_frame, x, y, color, barmode = 'group', ...)
在此语法中:
data_frame - 这是您用作数据源的 DataFrame。
x - The column in your DataFrame that represents the x-axis values.
y - 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 中的自定义选项允许根据我们特定的视觉和解释需求进行调整。
请记住,视觉数据分析不仅仅是制作漂亮的图表;它还涉及真正传达复杂的信息。因此,在选择图表类型、多样性计划和计划元素时要仔细考虑,以确保您的数据故事尽可能清晰和令人信服。通过掌握分组条形图,您将为数据可视化工具箱添加一个强大的工具。祝您绘图愉快!