Python 如何在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’。
-
…:用于自定义绘图的其他参数的占位符。
步骤
让我们将创建分组柱状图的过程分解为简单的步骤:
- 导入必要的库。
-
创建或导入您的数据帧。
-
根据您的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参数和variety参数分别表示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中的自定义选项可以根据我们特定的视觉和解释需求进行调整。
请记住,视觉信息分析不仅仅是制作漂亮的图表,也包括传达复杂的信息。因此,对于图表类型、变化方案和设计元素的选择要仔细考虑,以确保您的数据故事尽可能清晰和有说服力。通过掌握分组条形图,您将为数据可视化工具箱增添一个强大的工具。祝您绘图愉快!