在当今这个技术飞速发展的时代,数据可视化成为了一个热门话题。随着数据可视化领域的不断成长,现在有了许多不同类型的视觉图表。然而,面对一堆统计数据,数据分析师可能能够理解其中的信息,但对于普通人来说,仅凭直观感受很难理解数据所传达的信息。因此,需要图表来帮助可视化数据。
在众多图表类型中,竞速条形图因其动态展示数据而广受欢迎。特别是在展示COVID-19疫情数据时,竞速条形图能够清晰地告诉在不同时间段内哪个国家的病例数最多。
本文将介绍以下几种图表类型:
“可视化能够回答未曾意识到的问题。” —— Ben Schneiderman
条形图因其简单直观而广受欢迎。本文将从如何导入可视化和读取数据集的库开始,逐步介绍如何制作竞速条形图。
首先,需要导入Plotly Express库和Pandas库来处理数据。
import plotly.express as pximport pandas as pd
使用的数据集包含8列和1704行数据。其中有3列是分类数据(国家、大洲、iso_alpha),5列是数值数据(年份、预期寿命、人口、人均GDP、iso_num)。
在制作图表之前,需要检查数据集中是否有空值,并了解每个列的唯一值数量。
df.isnull().sum()df.nunique()
PlotlyExpress提供了令人惊叹的动画图表功能。通过这些功能,可以观察到在不同时间段内哪个大洲的人口最多。以下是制作竞速条形图的代码示例:
fig_bar = px.histogram(df, x="continent", y="pop", color="continent", animation_frame="year", animation_group="country", range_y=[0,4000000000], color_discrete_sequence=px.colors.qualitative.T10)
在这段代码中,设置了x轴和y轴的值,动画帧的值,以及数据分组的值。还设置了x轴和y轴的范围,以确保数据在动画过程中始终保持可见。
注意:应始终固定x_range和y_range,以确保数据在条形图动画过程中始终保持可见。
可以通过以下方式设置x轴和y轴:
还可以通过调整margin的值来改变图表的外观。默认情况下,图例会出现在右侧,但如果需要,也可以将其设置为水平或垂直。此外,可以为条形图添加不同的颜色,并根据喜好添加背景色。
除了Plotly动画,还可以使用raceplotly来制作竞速条形图。以下是使用raceplotly制作竞速条形图的代码示例:
!pip install raceplotlyfrom raceplotly.plots import barplot
在这段代码中,没有预先指定颜色,而是直接使用raceplotly来创建竞速条形图。
将制作一个简单的条形图,并在主条上显示文本。图表将展示加拿大的预期寿命随年份的变化。以下是制作普通条形图的代码示例:
data_canada = px.data.gapminder().query("country == 'Canada'")fig = px.bar(data_canada, x='year', y='lifeExp', text='lifeExp', color_discrete_sequence=['#b279a2'], title='加拿大预期寿命随年份变化', height=300)
堆叠条形图展示了一个分类变量与其子分类变量之间的数量关系。它们显示了子分类随时间的变化。堆叠条形图主要用于比较变量之间的关系。它们是二维的,有两个轴:一个轴代表分类变量,另一个轴代表数值。可以以两种方式展示堆叠条形图:垂直和水平。
以下是制作堆叠条形图的代码示例:
dff = px.data.gapminder().query("country == 'India' | country == 'Canada'| country == 'United States'")fig_stack = px.bar(dff, x='year', y='lifeExp', color='country', color_discrete_sequence=['#72b7b2','#4c78a8','#b279a2'], title='加拿大|印度|美国预期寿命随年份变化', height=300)
分组条形图与堆叠条形图类似,但每个分类变量的子分类变量分别展示在不同的条形中。以下是制作分组条形图的代码示例:
dff = px.data.gapminder().query("country == 'India' | country == 'United States'")fig2 = px.bar(dff, x='year', y='lifeExp', color='country', color_discrete_sequence=['#72b7b2','#b279a2'], title='印度|美国预期寿命随年份变化', height=300, barmode='group')
data_canada = df[df.country == 'Canada']fig1 = px.bar(data_canada, x='year', y='pop', height=400, hover_data=['lifeExp', 'gdpPercap'], color='lifeExp')