交互式散点图
如您现在所知,散点图是用于在数据集中显示全局模式的最重要的图类型之一。 自然,重要的是要知道如何在这些图中引入交互性。 我们将首先查看对图的缩放和重置操作。 不过,在此之前,让我们看一下数据集。
我们可以使用以下代码查看HPI数据集:
import pandas as pd
#Download the data from Github repo
hpi_url = "https://
# Once downloaded, read it into a DataFrame using pandas
hpi_df = pd.read_csv(hpi_url, sep='\t')
hpi_df.head()
输出结果:
图略
请注意,此数据集中有5个数字/定量特征:预期寿命(年),幸福感(0-10),结果不平等,生态足迹(gha /人均)和快乐星球指数。有两个分类/名义特征 :国家和地区。 在altair中,量化特征表示为Q,名义特征表示为N。我们将很快在可视化中看到如何使用它。
这实际上很棘手。 通常,出于可视化的目的,如果表示诸如等级之类的属性的特征具有广泛的范围(大约超过10个等级),则可以将该特征视为另一个数字或定量特征。 但是等级越少,它的作用就越像标签,并且类似于名义特征。 但是,等级特征与名义特征不同的方式存在一个关键差异–顺序特征对于次序特征很重要。 等级1与等级5具有不同的含义和优先级。
让我们通过练习生成并观察每个国家的“幸福感”(0-10)和“快乐星球指数”特征的静态散点图,使用不同的颜色表示该国家所属的区域并继续添加交互性 。
向静态散点图添加放大和缩小
我们将使用matplotlib生成静态散点图。 我们将在此处使用hpi_data_countries数据集作为绘图,并分析绘图中由图例表示的每个国家/地区的福利得分。 我们将继续添加缩放功能。 我们将使用altair库执行此操作。 让我们将简单的代码分解为更简单的组件,因为这是我们第一次使用altair进行交互。 为此,请执行以下步骤:
-
加载hpi数据集并使用pandas从数据集中读取:
import pandas as pd
hpi_url = “https:”
Once downloaded, read it into a DataFrame using pandas
hpi_df = pd.read_csv(hpi_url, sep=‘\t’)
* 使用matplotlib绘制静态散点图:
```
import seaborn as sns
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax = sns.scatterplot(x='Wellbeing (0-10)', y='Happy Planet Index',
hue='Region', data=hpi_df)
plt.show()
输出结果:
图略
这里的每个点代表来自7个区域任何一个国家。 幸福感和幸福星球指数似乎相关。 我们看到不同地区的快乐星球指数得分和幸福感得分呈趋势。
现在我们有了一个静态散点图,让我们探讨一下该图的交互性。 我们将研究放大和缩小。
-
将altair模块导入为alt:
import altair as alt
alt.renderers.enable(‘notebook’)
输出结果:
RendererRegistry.enable(‘notebook’)
* 提供选择的DataFrame(在我们的例子中为hpi_df)到altair Chart函数。
* 使用mark_circle()函数使用实心圆表示散点图中的数据点。您也可以使用mark_point()函数使用空圆代替实心圆。
* 使用encode函数在x和y轴上指定特征。 尽管我们在此函数中还使用了color参数,以使用region函数对数据点进行颜色编码,但这是可选的。 最后,添加Interactive()函数以使绘图具有交互性以进行缩放! 这需要Jupyter Notebook 5.3或更高版本。 使用以下代码:
```
alt.Chart(hpi_df).mark_circle().encode(
x='Wellbeing (0-10):Q',
y='Happy Planet Index:Q',
color='Region:N',
).interactive()
输出结果:
静态散点图上的放大功能
图略
静态散点图上的缩小功能
图略
在该图上稍作调整,以确保可以实际放大和缩小。
您是否注意到我们在定量特征旁边添加了:Q后缀,在名义特征旁边添加了:N后缀? 添加这样的后缀有助于altair预先了解功能的类型,而不必自己推断。 您还可以尝试消除该图中的后缀,并且您会发现该图仍然可以正确生成,因为在这种情况下altair可以猜测要素的类型。 因此,添加后缀是一个好习惯,因为在某些情况下altair无法推断要素类型。
altair绘图中的一个重要概念是编码和通道。 这个概念真的很简单– altair尝试对数据的各个方面进行映射/编码,以实现更好的可视化。 这就是为什么您看到代码中有一个encode()函数的原因。 我们在编码函数中指定的各种参数(例如x,y和color)在altair中称为channel。 既然您已经了解了这些重要的术语,那么让我们看看Altair中其他有趣的交互形式。
注意:注意到绘图旁边的三个小点吗? 一旦将交互式绘图设置为所需的配置,就可以使用它将绘图保存到.png(静态)或.svg(交互式)文件中。 但是,.svg文件中的交互功能将无法正常工作,除非您在兼容软件(例如Adobe Animate)中将其打开。
将悬停和工具提示功能添加到散点图
探索散点图上的选择和突出显示功能
使用选择,缩放和悬停生成图
跨多个图选择
详情参阅 - 亚图跨际