数据STUDIO

使用 Plotly 创建 60+ 令人惊叹的交互式图表、地图

Image

Image

在这篇文章中,云朵君演示如何利用我最喜欢的数据可视化库 -- Plotly 的强大功能,用我们都喜欢的 Python 绘制出论文级质量的图表、地图和动画。

Plotly 可以轻松创建交互式工具提示,传达有关鼠标悬停的数据点的额外信息。

为什么选择 Plotly

说到 Python 中的数据可视化,人们经常会想到三个名字: Matplotlib、Seaborn 和 Plotly。

Plotly 是一个功能强大、用途广泛的 Python 库,提供多种图表类型,从基本的线图和散点图到复杂的三维可视化和地理地图。Plotly 还提供了直观、友好的用户界面,因此深受数据科学家和分析师的欢迎。

Plotly 提供多种图表,从统计或科学图表到金融或地理图表。这些图表可以使用各种方法显示,包括 Jupyter 笔记本、HTML 和 Dash 网络应用程序。

Plotly 以其交互性而闻名。与主要生成静态图表的 Matplotlib 和 Seaborn 不同,Plotly 生成的交互式图表允许用户缩放、平移和悬停以获取更多细节。这一功能对于 EDA 来说非常有用。

你准备好提升自己的 Plotly 数据可视化技能了吗?

因篇幅限制,只展示图表,每张图的完整python代码,我已整理出来,直接在#公众号:数据STUDIO 后台回复 【plotly】免费获取。

22 公共数据集

  • timesData.csv [1]2015-2016年世界大学排名[2]
  • gapminder_data_graphs.csv[3] / gapminder.csv (参见 px.data.gapminder() )该数据集是使用来自[4]Gapminder 网站[5]的数据生成的,该网站专注于收集和分享有关地方、国家和全球层面的社会、经济和环境发展的统计数据和其他信息。
  • 1950–2018 年预期寿命与 GDP.csv[6]
  • honeyproduction.csv[7]蜂蜜产量
  • WHR2023.csv 2023年世界幸福报告[8]
  • Pokemon.csv[9]完整的宝可梦数据集[10]。该数据集包含所有七代宝可梦的 802 只宝可梦的信息。数据集中包含的信息包括基础属性、与其他类型的宝可梦的对抗表现、身高、体重、分类、蛋的步数、经验值、能力等。这些信息是从http://serebii.net/抓取的。[11]
  • StudentsPerformance.csv[12]该数据集包含学生在各个科目中获得的分数。
  • px.data.stocks() 内置规范化股票数据(GOOG、AMZN 等)
  • px.data.iris() 内置鸢尾花数据集[13][16]
  • px.data.tips() 内置Tips 数据集[14]
  • px.data.wind() 内置风数据集
  • px.data.carshare() 内置汽车共享数据集
  • 波士顿犯罪记录[15]:犯罪时间、地点及描述。数据由 Analyze Boston 提供。
  • weatherAUS.csv[16]该数据集包含来自澳大利亚众多气象站的约 10 年每日天气观测数据
  • us_covid19_daily.csv[17]美国新冠肺炎疫情日报
  • 使用“heart.csv”数据集探索心脏数据[18]
  • sklearn.datasets.make_classification[19]这会首先创建呈正态分布(std=1)的点簇,并为每个类分配相同数量的簇。它引入了这些特征之间的相互依赖性,并向数据中添加了各种类型的噪声。
  • winemag-data-130k-v2.csv[20] 130k 条葡萄酒评论,包括品种、地点、酒庄、价格和描述。
  • Consumer_Complaints.csv[21]该数据集包括消费者对金融产品的投诉。
  • kc_house_data.csv[22]该数据集包含美国华盛顿州金县(King County)的房价数据,该数据也涵盖西雅图。该数据集来自 Kaggle 。
  • 2011_us_ag_exports.csv[23] 2011 年美国农业出口。
  • mt_bruno_elevation.csv[24] 圣布鲁诺山海拔。

Plotly基本应用

  • Plotly[25]可以使用pip[26]安装
!pip install plotly==5.24.1
!pip install dash
!pip install folium
  • 在整个研究过程中导入必要的 Python 库
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# plotly
# import plotly.plotly as py
from plotly.offline import init_notebook_mode, iplot, plot
import plotly as py

import plotly.graph_objects as go
import plotly.express as px

from dash import Dash, dcc, html, Input, Output

import folium 
from folium import plugins

因篇幅限制,所有只展示图表,每张图的完整python代码,我已整理出来,直接在#公众号:数据STUDIO 后台回复 【plotly】免费获取。

Line Plot

  • 使用内置数据集px.data.gapminder()[27]和 go.Scatter() 创建包含 2 个数据框的线图。
人均GDP与预期寿命:瑞典与日本
人均GDP与预期寿命:瑞典与日本
  • 调用 px.line() 为上述数据集绘制 折线图[28]
德国的预期寿命
德国的预期寿命
大洋洲的预期寿命
大洋洲的预期寿命
  • 使用相同的数据集创建 Dash App[29]
各大洲各国预期寿命进展
各大洲各国预期寿命进展
  • 我们还可以使用px.line 绘制标准化股票数据
AMZN股票数据
AMZN股票数据
  • 使用 2 个数据创建另一个自定义线图
引用量和教学与世界百强大学排名对比
引用量和教学与世界百强大学排名对比

散点图

  • 使用鸢尾花数据集和 px.scatter() 来演示 散点图[30]
散点图:萼片宽度与萼片长度(鸢尾花数据集)
散点图:萼片宽度与萼片长度(鸢尾花数据集)
  • 我们可以使用 px.scatter() 来可视化多个数据框
2014、2015 和 2016 年世界百强大学引文与排名对比
2014、2015 和 2016 年世界百强大学引文与排名对比

散点图矩阵

  • 导入 plotly.figure_factory 来创建结合箱线图(如下所述)和散点图的散点图矩阵。
散点图矩阵
散点图矩阵

气泡图

  • 使用鸢尾花数据集和 px.scatter() 来演示气泡图
气泡图:萼片宽度与萼片长度(鸢尾花数据集)
气泡图:萼片宽度与萼片长度(鸢尾花数据集)
  • 使用教学色阶和研究规模参数创建“引用量 vs 世界排名”气泡图
引用量与世界排名 教学色标 研究规模
引用量与世界排名 教学色标 研究规模
  • 可以使用 px.scatter() 创建动画气泡图。

示例 1:读取数据集 Life Expectancy vs GDP 1950–2018.csv 并调整数据框

  • 创建以下动画
动画气泡图:人均GDP与预期寿命
动画气泡图:人均GDP与预期寿命

示例 2:读取蜂蜜产量数据集并创建第二个动画气泡图

动画气泡图:蜂蜜生产
动画气泡图:蜂蜜生产

直方图

  • 读取数据集timesData.csv[31]来绘制以下直方图
直方图:2011 年和 2015 年师生比例
直方图:2011 年和 2015 年师生比例

分布图

  • 这是在 Plotly 中创建分布图[32]
分布图
分布图

树形图

  • 读取波士顿犯罪数据集并绘制以下树状图
波士顿主要犯罪事件树状图
波士顿主要犯罪事件树状图

子弹图

  • 方法plotly.figure_factory.create_bullet可用于创建子弹图,如下所示
简单子弹图
简单子弹图

面积图

  • 下面的鸢尾花数据示例展示了填充面积图
鸢尾花数据填充面积图示例
鸢尾花数据填充面积图示例

条形图

  • 绘制波士顿十大重大犯罪的条形图很有指导意义
波士顿十大重大犯罪事件的条形图
波士顿十大重大犯罪事件的条形图

饼图

  • 使用波士顿犯罪数据集创建以下基本饼图
波士顿犯罪数据集:每年的犯罪数量
波士顿犯罪数据集:每年的犯罪数量
  • 读取数据集 StudentsPerformance.csv 来创建更高级的父母教育水平饼图.
父母受教育程度饼图
父母受教育程度饼图

旭日图

  • 父母的教育水平也可以用旭日图来分析。
父母受教育程度的旭日图
父母受教育程度的旭日图

箱线图

  • 创建 2014 年大学总分/研究的箱线图。
2014年大学总分/研究箱线图
2014年大学总分/研究箱线图
  • 读取 Pokemon数据集[33],创建带有自定义异常值的箱线图
Pokemon 数据集:带有自定义异常值的箱线图
Pokemon 数据集:带有自定义异常值的箱线图
  • 我们还可以检查前面提到的散点图矩阵
口袋妖怪数据集的散点图矩阵
口袋妖怪数据集的散点图矩阵

小提琴图

  • 使用 Pokémon 数据集创建以下小提琴图
口袋妖怪数据集的小提琴图
口袋妖怪数据集的小提琴图

带状图

  • 使用 px.data.tips() 数据集创建具有可变点大小的自定义带状图[34]
具有可变点大小的定制带状图(Tips 数据集)
具有可变点大小的定制带状图(Tips 数据集)

群体图

  • 使用 px.data.tips() 数据集创建群体图[35]
tips数据集:基本群图
tips数据集:基本群图

极坐标图

  • 使用 px.data.wind() 创建基本极坐标条形图[36]
风数据集:极坐标条形图
风数据集:极坐标条形图
  • 读取weatherAUS.csv数据集创建风玫瑰图
玫瑰图:降雨量与风向(weatherAUS.csv 数据集)
玫瑰图:降雨量与风向(weatherAUS.csv 数据集)

雷达图

  • 使用weatherAUS.csv数据集创建风雷达图
雷达图:降雨量与风向(weatherAUS.csv 数据集)
雷达图:降雨量与风向(weatherAUS.csv 数据集)

密度轮廓

  • 读取数据集 us_covid19_daily.csv
import numpy as np 
import pandas as pd 
import plotly.express as px

import warnings
warnings.filterwarnings('ignore')

df = pd.read_csv('us_covid19_daily.csv')

df.dropna(inplace = True)
#display(df.head())
display(df.info())

<class 'pandas.core.frame.DataFrame'>
Index: 76 entries, 0 to 75
Data columns (total 25 columns):
 #   Column                    Non-Null Count  Dtype  
---  ------                    --------------  -----  
 0   date                      76 non-null     int64  
 1   states                    76 non-null     int64  
 2   positive                  76 non-null     int64  
 3   negative                  76 non-null     float64
 4   pending                   76 non-null     float64
 5   hospitalizedCurrently     76 non-null     float64
 6   hospitalizedCumulative    76 non-null     float64
 7   inIcuCurrently            76 non-null     float64
 8   inIcuCumulative           76 non-null     float64
 9   onVentilatorCurrently     76 non-null     float64
 10  onVentilatorCumulative    76 non-null     float64
 11  recovered                 76 non-null     float64
 12  dateChecked               76 non-null     object 
 13  death                     76 non-null     float64
 14  hospitalized              76 non-null     float64
 15  lastModified              76 non-null     object 
 16  total                     76 non-null     int64  
 17  totalTestResults          76 non-null     int64  
 18  posNeg                    76 non-null     int64  
 19  deathIncrease             76 non-null     int64  
 20  hospitalizedIncrease      76 non-null     int64  
 21  negativeIncrease          76 non-null     int64  
 22  positiveIncrease          76 non-null     int64  
 23  totalTestResultsIncrease  76 non-null     int64  
 24  hash                      76 non-null     object 
dtypes: float64(11), int64(11), object(3)
memory usage: 15.4+ KB
  • 创建对数域密度等高线图
美国 COVID-19 日报:对数域正值与深度密度轮廓图
美国 COVID-19 日报:对数域正值与深度密度轮廓图
  • 看下面的鸢尾花数据集示例
鸢尾花数据集:密度轮廓图
鸢尾花数据集:密度轮廓图
  • 我们可以通过调用fig.update_traces来更改轨迹的配置,从而在 plotly.express 中创建填充轮廓图[37]
鸢尾花数据集:填充轮廓图
鸢尾花数据集:填充轮廓图

密度热图

  • 使用上述数据框 Data_to_plot 创建密度热图
美国 COVID-19 日报:对数域正值与深度密度热图
美国 COVID-19 日报:对数域正值与深度密度热图

相关矩阵

  • 读取heart.csv[38]数据集以创建相关矩阵

    <class 'pandas.core.frame.DataFrame'> RangeIndex: 303 entries, 0 to 302 Data columns (total 14 columns):

    Column    Non-Null Count  Dtype


    0   age       303 non-null    int64
    1   sex       303 non-null    int64
    2   cp        303 non-null    int64
    3   trestbps  303 non-null    int64
    4   chol      303 non-null    int64
    5   fbs       303 non-null    int64
    6   restecg   303 non-null    int64
    7   thalach   303 non-null    int64
    8   exang     303 non-null    int64
    9   oldpeak   303 non-null    float64 10  slope     303 non-null    int64
    11  ca        303 non-null    int64
    12  thal      303 non-null    int64
    13  target    303 non-null    int64
    dtypes: float64(1), int64(13) memory usage: 33.3 KB

Theart.csv数据集:连续特征的相关矩阵
Theart.csv数据集:连续特征的相关矩阵
  • 这是使用px.imshow()
心脏数据集:使用 px.imshow() 的相关矩阵
心脏数据集:使用 px.imshow() 的相关矩阵

决策边界

  • 使用sklearn.datasets.make_classification[39]生成一些自定义数据点。 我们的任务是 构建二分类(二进制)机器学习分类器的决策边界。
  • 名称 =[“Decision Tree”, ”Random Forest”, “ExtraTrees”]。
  • 端到端 ML 可视化工作流程
低信噪比输入聚类的决策边界:数据集 = [make_moons(noise=0.6, random_state=0),make_circles(noise=0.4, factor=0.5, random_state=1),make_blobs()]
低信噪比输入聚类的决策边界:数据集 = [make_moons(noise=0.6, random_state=0),make_circles(noise=0.4, factor=0.5, random_state=1),make_blobs()]
高信噪比的输入聚类的决策边界: datasets = [make_moons(noise=0.3, random_state=0) ,make_circles(noise=0.2, factor=0.5, random_state=1) ,make_blobs() ]
高信噪比的输入聚类的决策边界: datasets = [make_moons(noise=0.3, random_state=0) ,make_circles(noise=0.2, factor=0.5, random_state=1) ,make_blobs() ]

甘特图

  • 使用时间步长创建甘特图[40]
带有时间步长的甘特图
带有时间步长的甘特图

KDE Histogram2dContour

  • 读取数据集 winemag-data-130k-v2.csv 以创建 KDE Histogram2dContour 图
数据集 winemag-data-130k-v2.csv:KDE Histogram2dContour 图
数据集 winemag-data-130k-v2.csv:KDE Histogram2dContour 图
  • 我们可以创建更高级的 KDE Histogram2dContour plot[41]

  • 这里,输出存储在 HTML 文件temp-plot.html中

2 个正态分布的KDE Histogram2dContour
2 个正态分布的KDE Histogram2dContour

平行坐标

  • 使用 Iris 数据集通过plotly.express创建平行坐标图[42]
鸢尾花数据集:平行坐标图
鸢尾花数据集:平行坐标图

平行类别

  • 使用 Tips 数据集通过 plotly.express 创建平行类别图[43]
鸢尾花数据集:平行坐标图
鸢尾花数据集:平行坐标图

3D绘图

  • 创建以下人工数据集
df2 =pd.DataFrame(np.random.rand(40,4))
df2['label'] = np.round((3*np.random.rand(40,1) - 3)*-1)
df2[df2['label'] == 0] = 1
df2['label'] = df2['label'].astype(int).map({1:'Label_1', 2:'Label_2', 3:'Label_3'})
df2.columns = ['Value_1','Value_2','Value_3','Value_4', 'Labels']
  • 使用该数据集来说明三维散点图
3D散点图
3D散点图

三元组散点图

  • 使用上面的数据框 df2 创建三元组散点
三元组散点图
三元组散点图

瀑布图

  • 使用瀑布图以图形方式表示损益
瀑布图:损益
瀑布图:损益

漏斗图

  • 创建漏斗图
漏斗图
漏斗图

地图

  • 读取Consumer_Complaints.csv[44]数据集来创建美国各州消费者投诉热图 [20]。
  • 为此,我们需要从以下来源收集纬度、经度值:

https://gist.githubusercontent.com/meiqimichelle/7727723/raw/0109432d22f28fd1a669a3fd113e41c4193dbb5d/USstates_avg_latLong

https://www.factmonster.com/us/postal-information/state-abbreviations-and-state-postal-codes

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 670598 entries, 0 to 670597
Data columns (total 18 columns):
 #   Column                        Non-Null Count   Dtype 
---  ------                        --------------   ----- 
 0   Date received                 670598 non-null  object
 1   Product                       670598 non-null  object
 2   Sub-product                   472396 non-null  object
 3   Issue                         670598 non-null  object
 4   Sub-issue                     269868 non-null  object
 5   Consumer complaint narrative  114704 non-null  object
 6   Company public response       145197 non-null  object
 7   Company                       670598 non-null  object
 8   State                         665293 non-null  object
 9   ZIP code                      665274 non-null  object
 10  Tags                          94730 non-null   object
 11  Consumer consent provided?    208151 non-null  object
 12  Submitted via                 670598 non-null  object
 13  Date sent to company          670598 non-null  object
 14  Company response to consumer  670598 non-null  object
 15  Timely response?              670598 non-null  object
 16  Consumer disputed?            629179 non-null  object
 17  Complaint ID                  670598 non-null  int64 
dtypes: int64(1), object(17)
memory usage: 92.1+ MB
美国各州热图——消费者投诉
美国各州热图——消费者投诉
  • 以下是各州消费者投诉的地图
各州消费者投诉
各州消费者投诉

散点地图

  • 调用该函数px.scatter_map在瓦片地图上创建散点图
汽车共享数据集:瓦片地图上的散点图
汽车共享数据集:瓦片地图上的散点图
  • 使用go.Scattermapbox()为同一数据集创建与上述散点图略有不同的版本
汽车共享数据集:go.Scattermapbox()
汽车共享数据集:go.Scattermapbox()
  • 这是基于 px.scatter_mapbox()  的上述地图的第三个版本
entroid_lat  centroid_lon    car_hours  peak_hour
  0     45.471549    -73.588684  1772.750000          2
  1     45.543865    -73.562456   986.333333         23
  2     45.487640    -73.642767   354.750000         20
  3     45.522870    -73.595677   560.166667         23
  4     45.453971    -73.738946  2836.666667         19
使用 px.scatter_mapbox() 在 Mapbox 地图上获取汽车共享数据
使用 px.scatter_mapbox() 在 Mapbox 地图上获取汽车共享数据
  • 使用 px.scatter_mapbox() 结合不带 mapbox  token的公共 USGS 影像地图来检查kc_house_data.csv数据集[45]
  <class 'pandas.core.frame.DataFrame'>
  RangeIndex: 21613 entries, 0 to 21612
  Data columns (total 21 columns):
   #   Column         Non-Null Count  Dtype  
  ---  ------         --------------  -----  
   0   id             21613 non-null  int64  
   1   date           21613 non-null  object 
   2   price          21613 non-null  float64
   3   bedrooms       21613 non-null  int64  
   4   bathrooms      21613 non-null  float64
   5   sqft_living    21613 non-null  int64  
   6   sqft_lot       21613 non-null  int64  
   7   floors         21613 non-null  float64
   8   waterfront     21613 non-null  int64  
   9   view           21613 non-null  int64  
   10  condition      21613 non-null  int64  
   11  grade          21613 non-null  int64  
   12  sqft_above     21611 non-null  float64
   13  sqft_basement  21613 non-null  int64  
   14  yr_built       21613 non-null  int64  
   15  yr_renovated   21613 non-null  int64  
   16  zipcode        21613 non-null  int64  
   17  lat            21613 non-null  float64
   18  long           21613 non-null  float64
   19  sqft_living15  21613 non-null  int64  
   20  sqft_lot15     21613 non-null  int64  
  dtypes: float64(6), int64(14), object(1)
  memory usage: 3.5+ MB
KC WA 房价数据集:px.scatter_mapbox() 按楼层着色
KC WA 房价数据集:px.scatter_mapbox() 按楼层着色
KC WA 房价数据集:px.scatter_mapbox() 按价格着色
KC WA 房价数据集:px.scatter_mapbox() 按价格着色

等值线图

  • 调用px.choropleth为数据集[46]2011_us_ag_exports.csv[47]创建以下等值线图
等值线地图
等值线地图

地理散点图

plotly.express.scatter_geo()函数可用于将地理数据绘制到地图上。

地理散点图:px.data.gapminder()
地理散点图:px.data.gapminder()

下拉式菜单

  • 创建一个简单的下拉菜单,以便在单个图中可视化不同的类别。

在这个例子中,我们将从www.basketball-reference.com抓取各个球员的NBA统计数据

我们关注场均得分、篮板和助攻排名前十的球员。我们的菜单包含三个条形图。每个条形图代表不同的类别(得分、篮板和助攻)

条形图:前 10 名领导者(积分)
条形图:前 10 名领导者(积分)
B条形图:前 10 名领导者的得分
B条形图:前 10 名领导者的得分
条形图:前 10 名领先者的反弹
条形图:前 10 名领先者的反弹
条形图:前 10 名领导者的协助
条形图:前 10 名领导者的协助

图像

  • 使用cv2.imread()[48]显示图像文件中的图像
显示图像文件中的图像
显示图像文件中的图像

3D表面图

  • 我们可以调用go.Surface()在 Plotly 中绘制 [3D 表面图]](https://plotly.com/python/3d-surface-plots/ "3D 表面图]")
Plotly 中的 3D 表面地形图示例:布鲁诺山海拔
Plotly 中的 3D 表面地形图示例:布鲁诺山海拔

Plotly 可视化总结

以下是整个研究中讨论的 Plotly 可视化的商业价值和诠释的摘要:

  • 线形图强调 Y 轴上的指标随 X 轴上的变量而发生的变化,是时间序列分析(TSA)的最佳实践,如气象学、金融科技、医疗保健、交通等。
  • 散点图显示两组数据之间的关系/相关性,你可以从数据中看出明显的趋势。散点图在现实生活中用于直观地显示二元数据(销售、天气、医疗、生物、经济等)
  • 散点图矩阵是粗略判断多个变量之间是否存在线性相关关系的好方法。这尤其有助于找出可能与基因组或蛋白质组数据(社会科学、市场研究、金融、医疗保健和环境科学)具有类似相关性的特定变量。该矩阵表示不同变量组合之间的双变量或成对关系。
  • 气泡图评估模式的一致性。某些领域的气泡大小一致性较低,意味着关系中存在较多差异(银行业务、消费者满意度评级、收入预测和绘图以及特定产品的生产成本)。
  • 直方图将数值变量值的分布绘制成一系列条形图。直方图可以很好地显示数据集变量的一般分布特征。你可以大致看出分布的峰值在哪里,分布是偏斜还是对称,以及是否存在异常值用于分析股票市场收益、医疗保健行业、教育、客户购买金额、制造缺陷和质量控制、社会科学中的调查结果、环境科学中的空气质量指数、基于人口统计学的城市年龄分布、物理学中的粒子能级、人力资源中的员工任期等)。
  • 分布图表示连续数据变量的总体分布(参见 Jointplot、Pairplot、Rugplot、Kdeplot )。Distplot 可用于检查单变量和双变量分布(参见上述用例)。
  • 树状图用于表示关键绩效指标,深色可突出极端值、高或低。树状图是一种基于区域的分层数据图。树状图常见于数据仪表盘(股票市场、抵达延误、汽车行业、营销策略、城市各时期的降雨量、特定生物群落中的动植物物种清单等)。
  • 子弹图用于在一个条形图中比较两个衡量指标。它最适合用来比较一个主要衡量标准与一个设定标准(次要衡量标准)的进展情况。例如:需求计划、实际净利润率与目标净利润率、KPI 与销售和零售基准的比较等。
  • 面积图结合折线图和柱状图,显示一个或多个组的数值如何随第二个变量(通常是时间变量)的变化而变化。KPI 业务报告仪表板、多彩折线图 BI 图表和极简面积图与进度环信息图表的前 3 个示例。这有助于战略决策和预测。战略性地利用这些图表可以推动业务效益和提升绩效,塑造组织的成功之路。
  • 柱状图比较不同类别之间的汇总统计数据。每个条形图代表一个离散类别。它显示了数字变量和分类变量之间的关系(敏捷制造的工业应用、供应链、客户需求、价格趋势监控、波动性、安全运动指标等)。
  • 饼图将部分与整体进行比较。每个切片的大小与每个类别在整体中的相对大小成正比(销售额、游客流量、出版费、石油储备、投资组合拆分、安卓系统分布、市场份额)。
  • 旭日图由一个内圈组成,周围环绕着更深的层级。它用于将分层数据可视化(产业链和企业集团内部关系、增强型战略决策、高级定制技术)。
  • 方框图用于比较和对比两个或多个组(不同组的年龄、年耗电量或温度)。
  • 小提琴图是盒图与核密度图的混合体,可显示数据中的峰值。它是双峰数据的理想选择,而方框图本身无法区分单峰数据和双峰数据(产品用户的人口统计、不同产品系列中每个客户的收入范围、数据驱动的临床决策和服务管理)。
  • 带状图是一种单轴散点图,用于可视化许多单个一维值的分布。它非常适合显示分布中的单个值。带状图适用于各行各业,包括研究、医疗保健和制造业。
  • 蜂群图是一种分类散点图,用于可视化数据集中数据点的分布。它通过显示单个数据点对盒图或小提琴图等其他图进行补充。蜂群图最适用于有许多独立特征的分类问题(如医疗保健)。
  • 极坐标图使用极坐标系表示两个数值变量。极坐标图的一些应用领域包括导航、工程、物理和生物等。
  • 雷达图用于在由 3 个或更多定量变量组成的二维图表上展示多元数据(例如,比较不同的产品和概念、分析产品在一段时间内的市场表现、做出数据驱动的决策)。它可以在市场营销、分析、销售、研究、教育等不同领域发挥重要作用。
  • 密度等值线将数据点的密度描绘成一组离散的层次。与地形图上的等高线类似,每个等高线边界都是密度恒定的隔离线。例如,这种绘图对生态学可能很有用。
  • 密度热图是数值数据的图形表示法,数据集中的单个数据点用不同的颜色表示。热图是理解数据的强大工具,在许多行业都有广泛的用例和应用--从股市分析到网站分析。
  • 相关矩阵可以轻松地将数据中的关联可视化。这使其成为构建 ML 模型的重要步骤。它还可用于根据数据进行预测和决策。低相关系数表明两个变量之间的关系并不紧密。
  • 决策边界(Decision Boundary)是将一类实例与另一类实例分开的线或超平面。它广泛应用于金融、医疗保健和市场营销等多个领域。
  • 甘特图是一种项目管理图,允许项目经理创建项目进度表。它显示了项目任务的完成顺序、到期时间、持续时间等详细信息。
  • KDE Histogram2dContour Plot 是一种二维直方图等高线图(如城市建筑能源模型)。
  • 平行坐标图非常适合将多个变量放在一起进行比较,并查看它们之间的关系。提出散点图矩阵、字形和平行坐标等多维图形,是为了便于探索多变量数据(如比较汽车模型、细菌与药物)。
  • 平行分类图(也称平行集或冲积图)是多维分类数据集的可视化。数据集中的每个变量由一列矩形表示,每个矩形对应该变量的一个离散值(如医学研究、葡萄酒质量探索)。
  • 三维图是可视化三维数据(如有两个因变量和一个自变量的数据)的重要工具。在试图发现三个维度上可能存在的相关性时,三维图可能非常有用(例如气候变化、化石损耗、生态毒性、人类健康)。
  • 散点三元图是一种特殊的三元图,是一种三角形图,用于表示三个变量相加等于一个常数的比率(如土壤分析、基因组研究、化合物、市场研究、营养评估、投资分析、人口研究、项目管理、生态学)。
  • 瀑布图有助于了解初始值(如净收入)如何受到一系列正值和负值的影响。瀑布图上的每个条形图都显示了增加或减少,最后在图表右侧的条形图代表了总值。例如,瀑布图显示每个 “产品 ”的 “利润”。金融行业示例:研究各种收入流对组织整体利润的影响。
  • 漏斗图是一种专门的图表类型,用于展示用户在业务或销售流程中的流动情况。从漏斗的宽度可以看出流程中每个阶段的用户数量(如 B2B SaaS 产品、消费技术漏斗分析、MINDBODY、电子商务漏斗、Rappi A/B 测试、金融技术产品、QuickBooks、媒体漏斗、NBCUniversal)。
  • 地图一直被用来帮助人们导航和了解周围环境。在大数据时代,地图已成为数据可视化的重要工具。地理信息系统(GIS)将数据与地图连接起来,整合了地理空间数据。
  • 散点地图框是地理信息系统中使用的瓦片地图上的散点图。航空、运输、房地产、土木工程、航运、研究人员和咨询等许多行业都依赖地理信息系统。
  • 等高图是由彩色多边形组成的地图。这些地图用于表示一个确定地理区域内某一数量的空间变化。纵横图在战略规划和数据驱动决策中发挥着重要作用。
  • 地理散点图:地图上的每一行数据都用一个符号标记来表示。地理空间散点图可将数据源中的数据分布到各个地理位置,还可根据所选的数据库字段为数据点着色,并缩放数据点的大小(如关键任务应急服务应用程序、大型基础设施管理项目)。
  • 下拉菜单是简洁图形用户界面的代名词。它们提供了一个隐藏的功能世界,不会让用户因按钮过多而不知所措。最佳行业案例包括表单填写、属性选择、Bootstrap 服务台模板、酒店/旅行预订、Facebook、Apple、Medium、Sunglass Hut、Photoshop、Ryanair、Converse、Shiva、EdTech、Airbnb、Puma、Dribble、Profile Dropdown、The extra cup、Help and Feedback、电子商务、医疗保健和人力资源。
  • 图像表示由基于人工智能的深度学习算法处理的输入像素网格(电子商务、人脸识别、智慧城市、交通流动性、质量控制、安全、医疗保健、自动驾驶汽车、农业、制造业、内容管理)
  • 3D表面图是描述两个变量函数的图形。它基本上是三维表面的二维表示。行业实例包括几乎所有设备应用、暴露于自由基的材料的界面化学、生物和医学研究领域。

写在最后

  • 数据可视化是数据科学的关键组成部分,它能增强对复杂数据的理解和交流。
  • 在本文中,我们展示了如何在交互式数据可视化中使用整体部分讲故事技术。
  • 我们使用数据科学家感兴趣的 22 个公共领域数据集讨论了大量代码片段、图形用户界面和 EDA 示例。
  • 我们将自定义示例与现实生活中的数据集相结合,用 Python 中的 Plotly 创建了 63 个令人惊叹的图形、图表、地图和动画。
  • 在整个研究过程中,我们对 Plotly 进行了深入分析。我们探讨了这个著名 Python 库的优缺点,同时还通过详细示例和实践代码片段展示了它的功能。
参考资料
[1] 

timesData.csv : https://www.kaggle.com/code/kanncaa1/plotly-tutorial-for-beginners/input?select=timesData.csv

[2] 

2015-2016年世界大学排名: https://www.timeshighereducation.com/world-university-rankings

[3] 

gapminder_data_graphs.csv: https://www.kaggle.com/datasets/albertovidalrod/gapminder-dataset

[4] 

gapminder.csv (参见 px.data.gapminder() )该数据集是使用来自: https://github.com/kirenz/datasets/blob/master/gapminder.csv

[5] 

Gapminder 网站: https://www.gapminder.org/data/

[6] 

1950–2018 年预期寿命与 GDP.csv: https://www.kaggle.com/code/luxoloshilofunde/life-expectancy-vs-gdp-per-capita-1950-2018/input?select=Life+Expectancy+vs+GDP+1950-2018.csv

[7] 

honeyproduction.csv: https://www.kaggle.com/datasets/jessicali9530/honey-production

[8] 

2023年世界幸福报告: https://www.kaggle.com/datasets/ajaypalsinghlo/world-happiness-report-2023

[9] 

Pokemon.csv: https://www.kaggle.com/code/thebrownviking20/intermediate-visualization-tutorial-using-plotly/input?select=Pokemon.csv

[10] 

数据集: https://www.kaggle.com/datasets/rounakbanik/pokemon

[11] 

http://serebii.net/抓取的。: http://serebii.net/

[12] 

StudentsPerformance.csv: https://www.kaggle.com/code/desalegngeb/plotly-guide-customize-for-better-visualizations/input?select=StudentsPerformance.csv

[13] 

数据集: https://scikit-learn.org/1.5/auto_examples/datasets/plot_iris_dataset.html

[14] 

Tips 数据集: https://www.kaggle.com/code/sanjanabasu/tips-dataset

[15] 

波士顿犯罪记录: https://www.kaggle.com/datasets/AnalyzeBoston/crimes-in-boston

[16] 

weatherAUS.csv: https://www.kaggle.com/code/desalegngeb/plotly-guide-customize-for-better-visualizations/input?select=weatherAUS.csv

[17] 

us_covid19_daily.csv: https://www.kaggle.com/code/servietsky/plotly-20-best-interactive-graphs-tutorial/input?select=us_covid19_daily.csv

[18] 

使用“heart.csv”数据集探索心脏数据: https://www.kaggle.com/datasets/arezaei81/heartcsv

[19] 

sklearn.datasets.make_classification: https://scikit-learn.org/1.5/modules/generated/sklearn.datasets.make_classification.html

[20] 

winemag-data-130k-v2.csv: https://www.kaggle.com/code/residentmario/introduction-to-plotly-optional/input?select=winemag-data-130k-v2.csv

[21] 

Consumer_Complaints.csv: https://www.kaggle.com/code/rajacsp/eda-and-visualization-heatmap-plotly-donutplot/input

[22] 

kc_house_data.csv: https://www.kaggle.com/datasets/shivachandel/kc-house-data

[23] 

2011_us_ag_exports.csv: https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv

[24] 

mt_bruno_elevation.csv: https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv

[25] 

Plotly: https://plotly.com/python/getting-started/

[26] 

pip: https://pypi.org/project/plotly/

[27] 

px.data.gapminder(): https://stackoverflow.com/questions/73488602/line-graph-using-plotly

[28] 

折线图: https://plotly.com/python/line-charts/

[29] 

Dash App: https://dash.plotly.com/

[30] 

散点图: https://plotly.com/python/line-and-scatter/

[31] 

timesData.csv: https://www.kaggle.com/code/kanncaa1/plotly-tutorial-for-beginners/input?select=timesData.csv

[32] 

分布图: https://stackoverflow.com/questions/70328489/create-plotly-distplot-charts-in-plotly-express

[33] 

Pokemon数据集: https://www.kaggle.com/datasets/rounakbanik/pokemon

[34] 

自定义带状图: https://community.plotly.com/t/how-to-change-size-of-point-in-px-strip-plot/70506

[35] 

群体图: https://stackoverflow.com/questions/61493460/swarm-plots-in-plotly-plotly-express

[36] 

极坐标条形图: https://plotly.com/python/wind-rose-charts/

[37] 

在 plotly.express 中创建填充轮廓图: https://github.com/plotly/plotly.py/issues/2071#top

[38] 

heart.csv: https://www.kaggle.com/datasets/arezaei81/heartcsv

[39] 

sklearn.datasets.make_classification: https://scikit-learn.org/1.5/modules/generated/sklearn.datasets.make_classification.html

[40] 

甘特图: https://stackoverflow.com/questions/73247210/how-to-plot-a-gantt-chart-using-timesteps-and-not-dates-using-plotly

[41] 

KDE Histogram2dContour plot: https://community.plotly.com/t/overlaying-grid-over-contour-graph/38709

[42] 

平行坐标图: https://plotly.com/python/parallel-coordinates-plot/

[43] 

平行类别图: https://plotly.com/python/parallel-categories-diagram/

[44] 

Consumer_Complaints.csv: https://www.kaggle.com/code/rajacsp/eda-and-visualization-heatmap-plotly-donutplot/input

[45] 

kc_house_data.csv数据集: https://www.kaggle.com/datasets/shivachandel/kc-house-data

[46] 

px.choropleth为数据集: https://www.geeksforgeeks.org/choropleth-maps-using-plotly-in-python/

[47] 

2011_us_ag_exports.csv: https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv

[48] 

cv2.imread(): https://www.geeksforgeeks.org/how-to-display-image-using-plotly/

🏴‍☠️宝藏级🏴‍☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉Python|MySQL|数据分析|数据可视化|机器学习与数据挖掘|爬虫等,从入门到进阶!

长按👇关注- 数据STUDIO -设为星标,干货速递ImageImage