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