使用 Plotly 创建 60+ 令人惊叹的交互式图表、地图
仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
在这篇文章中,云朵君演示如何利用我最喜欢的数据可视化库–Plotly的强大功能,用我们都喜欢的Python绘制出论文级质量的图表、地图和动画。
Plotly可以轻松创建交互式工具提示,传达有关鼠标悬停的数据点的额外信息。
说到Python中的数据可视化,人们经常会想到三个名字:Matplotlib、Seaborn和Plotly。
Plotly是一个功能强大、用途广泛的Python库,提供多种图表类型,从基本的线图和散点图到复杂的三维可视化和地理地图。Plotly还提供了直观、友好的用户界面,因此深受数据科学家和分析师的欢迎。
Plotly提供多种图表,从统计或科学图表到金融或地理图表。这些图表可以使用各种方法显示,包括Jupyter笔记本、HTML和Dash网络应用程序。
Plotly以其交互性而闻名。与主要生成静态图表的Matplotlib和Seaborn不同,Plotly生成的交互式图表允许用户缩放、平移和悬停以获取更多细节。这一功能对于EDA来说非常有用。
你准备好提升自己的Plotly数据可视化技能了吗?
因篇幅限制,只展示图表,每张图的完整python代码,我已整理出来,直接在#公众号:数据STUDIO后台回复【plotly】免费获取。
timesData.csv[1]2015-2016年世界大学排名[2]
1950–2018年预期寿命与GDP.csv[6]
honeyproduction.csv[7]蜂蜜产量
WHR2023.csv2023年世界幸福报告[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]:犯罪时间、地点及描述。数据由AnalyzeBoston提供。
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]该数据集包含美国华盛顿州金县(KingCounty)的房价数据,该数据也涵盖西雅图。该数据集来自Kaggle。
2011_us_ag_exports.csv[23]2011年美国农业出口。
mt_bruno_elevation.csv[24]圣布鲁诺山海拔。
Plotly[25]可以使用pip[26]安装
在整个研究过程中导入必要的Python库
因篇幅限制,所有只展示图表,每张图的完整python代码,我已整理出来,直接在#公众号:数据STUDIO后台回复【plotly】免费获取。
使用内置数据集px.data.gapminder()[27]和go.Scatter()创建包含2个数据框的线图。
调用px.line()为上述数据集绘制折线图[28]
使用相同的数据集创建DashApp[29]
我们还可以使用px.line绘制标准化股票数据
使用2个数据创建另一个自定义线图
使用鸢尾花数据集和px.scatter()来演示散点图[30]
我们可以使用px.scatter()来可视化多个数据框
导入plotly.figure_factory来创建结合箱线图(如下所述)和散点图的散点图矩阵。
使用鸢尾花数据集和px.scatter()来演示气泡图
使用教学色阶和研究规模参数创建“引用量vs世界排名”气泡图
可以使用px.scatter()创建动画气泡图。
示例1:读取数据集LifeExpectancyvsGDP1950–2018.csv并调整数据框
创建以下动画
示例2:读取蜂蜜产量数据集并创建第二个动画气泡图
读取数据集timesData.csv[31]来绘制以下直方图
这是在Plotly中创建分布图[32]
读取波士顿犯罪数据集并绘制以下树状图
方法plotly.figure_factory.create_bullet可用于创建子弹图,如下所示
下面的鸢尾花数据示例展示了填充面积图
绘制波士顿十大重大犯罪的条形图很有指导意义
使用波士顿犯罪数据集创建以下基本饼图
读取数据集StudentsPerformance.csv来创建更高级的父母教育水平饼图.
父母的教育水平也可以用旭日图来分析。
创建2014年大学总分/研究的箱线图。
读取Pokemon数据集[33],创建带有自定义异常值的箱线图
我们还可以检查前面提到的散点图矩阵
使用Pokémon数据集创建以下小提琴图
使用px.data.tips()数据集创建具有可变点大小的自定义带状图[34]
使用px.data.tips()数据集创建群体图[35]
使用px.data.wind()创建基本极坐标条形图[36]
读取weatherAUS.csv数据集创建风玫瑰图
使用weatherAUS.csv数据集创建风雷达图
读取数据集us_covid19_daily.csv
创建对数域密度等高线图
看下面的鸢尾花数据集示例
我们可以通过调用fig.update_traces来更改轨迹的配置,从而在plotly.express中创建填充轮廓图[37]
使用上述数据框Data_to_plot创建密度热图
读取heart.csv[38]数据集以创建相关矩阵
RangeIndex:303entries,0to302Datacolumns(total14columns):
这是使用px.imshow()
使用sklearn.datasets.make_classification[39]生成一些自定义数据点。我们的任务是构建二分类(二进制)机器学习分类器的决策边界。
名称=[“DecisionTree”,”RandomForest”,“ExtraTrees”]。
端到端ML可视化工作流程
使用时间步长创建甘特图[40]
读取数据集winemag-data-130k-v2.csv以创建KDEHistogram2dContour图
我们可以创建更高级的KDEHistogram2dContourplot[41]
这里,输出存储在HTML文件temp-plot.html中
使用Iris数据集通过plotly.express创建平行坐标图[42]
使用Tips数据集通过plotly.express创建平行类别图[43]
创建以下人工数据集
使用该数据集来说明三维散点图
使用上面的数据框df2创建三元组散点
使用瀑布图以图形方式表示损益
创建漏斗图
读取Consumer_Complaints.csv[44]数据集来创建美国各州消费者投诉热图[20]。
为此,我们需要从以下来源收集纬度、经度值:
https ://www.factmonster.com/us/postal-information/state-abbreviations-and-state-postal-codes
以下是各州消费者投诉的地图
调用该函数px.scatter_map在瓦片地图上创建散点图
使用go.Scattermapbox()为同一数据集创建与上述散点图略有不同的版本
这是基于px.scatter_mapbox()的上述地图的第三个版本
使用px.scatter_mapbox()结合不带mapboxtoken的公共USGS影像地图来检查kc_house_data.csv数据集[45]
调用px.choropleth为数据集[46]2011_us_ag_exports.csv[47]创建以下等值线图
plotly.express.scatter_geo()函数可用于将地理数据绘制到地图上。
创建一个简单的下拉菜单,以便在单个图中可视化不同的类别。
在这个例子中,我们将从www.basketball-reference.com抓取各个球员的NBA统计数据
我们关注场均得分、篮板和助攻排名前十的球员。我们的菜单包含三个条形图。每个条形图代表不同的类别(得分、篮板和助攻)
使用cv2.imread()[48]显示图像文件中的图像
我们可以调用go.Surface()在Plotly中绘制[3D表面图]](https ://plotly.com/python/3d-surface-plots/“3D表面图]”)
以下是整个研究中讨论的Plotly可视化的商业价值和诠释的摘要:
线形图强调Y轴上的指标随X轴上的变量而发生的变化,是时间序列分析(TSA)的最佳实践,如气象学、金融科技、医疗保健、交通等。
散点图显示两组数据之间的关系/相关性,你可以从数据中看出明显的趋势。散点图在现实生活中用于直观地显示二元数据(销售、天气、医疗、生物、经济等)
散点图矩阵是粗略判断多个变量之间是否存在线性相关关系的好方法。这尤其有助于找出可能与基因组或蛋白质组数据(社会科学、市场研究、金融、医疗保健和环境科学)具有类似相关性的特定变量。该矩阵表示不同变量组合之间的双变量或成对关系。
气泡图评估模式的一致性。某些领域的气泡大小一致性较低,意味着关系中存在较多差异(银行业务、消费者满意度评级、收入预测和绘图以及特定产品的生产成本)。
直方图将数值变量值的分布绘制成一系列条形图。直方图可以很好地显示数据集变量的一般分布特征。你可以大致看出分布的峰值在哪里,分布是偏斜还是对称,以及是否存在异常值用于分析股票市场收益、医疗保健行业、教育、客户购买金额、制造缺陷和质量控制、社会科学中的调查结果、环境科学中的空气质量指数、基于人口统计学的城市年龄分布、物理学中的粒子能级、人力资源中的员工任期等)。
分布图表示连续数据变量的总体分布(参见Jointplot、Pairplot、Rugplot、Kdeplot)。Distplot可用于检查单变量和双变量分布(参见上述用例)。
树状图用于表示关键绩效指标,深色可突出极端值、高或低。树状图是一种基于区域的分层数据图。树状图常见于数据仪表盘(股票市场、抵达延误、汽车行业、营销策略、城市各时期的降雨量、特定生物群落中的动植物物种清单等)。
子弹图用于在一个条形图中比较两个衡量指标。它最适合用来比较一个主要衡量标准与一个设定标准(次要衡量标准)的进展情况。例如:需求计划、实际净利润率与目标净利润率、KPI与销售和零售基准的比较等。
面积图结合折线图和柱状图,显示一个或多个组的数值如何随第二个变量(通常是时间变量)的变化而变化。KPI业务报告仪表板、多彩折线图BI图表和极简面积图与进度环信息图表的前3个示例。这有助于战略决策和预测。战略性地利用这些图表可以推动业务效益和提升绩效,塑造组织的成功之路。
柱状图比较不同类别之间的汇总统计数据。每个条形图代表一个离散类别。它显示了数字变量和分类变量之间的关系(敏捷制造的工业应用、供应链、客户需求、价格趋势监控、波动性、安全运动指标等)。
饼图将部分与整体进行比较。每个切片的大小与每个类别在整体中的相对大小成正比(销售额、游客流量、出版费、石油储备、投资组合拆分、安卓系统分布、市场份额)。
旭日图由一个内圈组成,周围环绕着更深的层级。它用于将分层数据可视化(产业链和企业集团内部关系、增强型战略决策、高级定制技术)。
方框图用于比较和对比两个或多个组(不同组的年龄、年耗电量或温度)。
小提琴图是盒图与核密度图的混合体,可显示数据中的峰值。它是双峰数据的理想选择,而方框图本身无法区分单峰数据和双峰数据(产品用户的人口统计、不同产品系列中每个客户的收入范围、数据驱动的临床决策和服务管理)。
带状图是一种单轴散点图,用于可视化许多单个一维值的分布。它非常适合显示分布中的单个值。带状图适用于各行各业,包括研究、医疗保健和制造业。
蜂群图是一种分类散点图,用于可视化数据集中数据点的分布。它通过显示单个数据点对盒图或小提琴图等其他图进行补充。蜂群图最适用于有许多独立特征的分类问题(如医疗保健)。
极坐标图使用极坐标系表示两个数值变量。极坐标图的一些应用领域包括导航、工程、物理和生物等。
雷达图用于在由3个或更多定量变量组成的二维图表上展示多元数据(例如,比较不同的产品和概念、分析产品在一段时间内的市场表现、做出数据驱动的决策)。它可以在市场营销、分析、销售、研究、教育等不同领域发挥重要作用。
密度等值线将数据点的密度描绘成一组离散的层次。与地形图上的等高线类似,每个等高线边界都是密度恒定的隔离线。例如,这种绘图对生态学可能很有用。
密度热图是数值数据的图形表示法,数据集中的单个数据点用不同的颜色表示。热图是理解数据的强大工具,在许多行业都有广泛的用例和应用–从股市分析到网站分析。
相关矩阵可以轻松地将数据中的关联可视化。这使其成为构建ML模型的重要步骤。它还可用于根据数据进行预测和决策。低相关系数表明两个变量之间的关系并不紧密。
决策边界(DecisionBoundary)是将一类实例与另一类实例分开的线或超平面。它广泛应用于金融、医疗保健和市场营销等多个领域。
甘特图是一种项目管理图,允许项目经理创建项目进度表。它显示了项目任务的完成顺序、到期时间、持续时间等详细信息。
KDEHistogram2dContourPlot是一种二维直方图等高线图(如城市建筑能源模型)。
平行坐标图非常适合将多个变量放在一起进行比较,并查看它们之间的关系。提出散点图矩阵、字形和平行坐标等多维图形,是为了便于探索多变量数据(如比较汽车模型、细菌与药物)。
平行分类图(也称平行集或冲积图)是多维分类数据集的可视化。数据集中的每个变量由一列矩形表示,每个矩形对应该变量的一个离散值(如医学研究、葡萄酒质量探索)。
三维图是可视化三维数据(如有两个因变量和一个自变量的数据)的重要工具。在试图发现三个维度上可能存在的相关性时,三维图可能非常有用(例如气候变化、化石损耗、生态毒性、人类健康)。
散点三元图是一种特殊的三元图,是一种三角形图,用于表示三个变量相加等于一个常数的比率(如土壤分析、基因组研究、化合物、市场研究、营养评估、投资分析、人口研究、项目管理、生态学)。
瀑布图有助于了解初始值(如净收入)如何受到一系列正值和负值的影响。瀑布图上的每个条形图都显示了增加或减少,最后在图表右侧的条形图代表了总值。例如,瀑布图显示每个“产品”的“利润”。金融行业示例:研究各种收入流对组织整体利润的影响。
漏斗图是一种专门的图表类型,用于展示用户在业务或销售流程中的流动情况。从漏斗的宽度可以看出流程中每个阶段的用户数量(如B2BSaaS产品、消费技术漏斗分析、MINDBODY、电子商务漏斗、RappiA/B测试、金融技术产品、QuickBooks、媒体漏斗、NBCUniversal)。
地图一直被用来帮助人们导航和了解周围环境。在大数据时代,地图已成为数据可视化的重要工具。地理信息系统(GIS)将数据与地图连接起来,整合了地理空间数据。
散点地图框是地理信息系统中使用的瓦片地图上的散点图。航空、运输、房地产、土木工程、航运、研究人员和咨询等许多行业都依赖地理信息系统。
等高图是由彩色多边形组成的地图。这些地图用于表示一个确定地理区域内某一数量的空间变化。纵横图在战略规划和数据驱动决策中发挥着重要作用。
地理散点图:地图上的每一行数据都用一个符号标记来表示。地理空间散点图可将数据源中的数据分布到各个地理位置,还可根据所选的数据库字段为数据点着色,并缩放数据点的大小(如关键任务应急服务应用程序、大型基础设施管理项目)。
图像表示由基于人工智能的深度学习算法处理的输入像素网格(电子商务、人脸识别、智慧城市、交通流动性、质量控制、安全、医疗保健、自动驾驶汽车、农业、制造业、内容管理)
3D表面图是描述两个变量函数的图形。它基本上是三维表面的二维表示。行业实例包括几乎所有设备应用、暴露于自由基的材料的界面化学、生物和医学研究领域。
数据可视化是数据科学的关键组成部分,它能增强对复杂数据的理解和交流。
在本文中,我们展示了如何在交互式数据可视化中使用整体部分讲故事技术。
我们使用数据科学家感兴趣的22个公共领域数据集讨论了大量代码片段、图形用户界面和EDA示例。
我们将自定义示例与现实生活中的数据集相结合,用Python中的Plotly创建了63个令人惊叹的图形、图表、地图和动画。
在整个研究过程中,我们对Plotly进行了深入分析。我们探讨了这个著名Python库的优缺点,同时还通过详细示例和实践代码片段展示了它的功能。
参考资料
2015-2016年世界大学排名:https ://www.timeshighereducation.com/world-university-rankings
gapminder_data_graphs.csv:https ://www.kaggle.com/datasets/albertovidalrod/gapminder-dataset
Gapminder网站:https ://www.gapminder.org/data/
honeyproduction.csv:https ://www.kaggle.com/datasets/jessicali9530/honey-production
2023年世界幸福报告:https ://www.kaggle.com/datasets/ajaypalsinghlo/world-happiness-report-2023
数据集:https ://www.kaggle.com/datasets/rounakbanik/pokemon
http ://serebii.net/抓取的。:http ://serebii.net/
数据集:https ://scikit-learn.org/1.5/auto_examples/datasets/plot_iris_dataset.html
Tips数据集:https ://www.kaggle.com/code/sanjanabasu/tips-dataset
波士顿犯罪记录:https ://www.kaggle.com/datasets/AnalyzeBoston/crimes-in-boston
使用“heart.csv”数据集探索心脏数据:https ://www.kaggle.com/datasets/arezaei81/heartcsv
kc_house_data.csv:https ://www.kaggle.com/datasets/shivachandel/kc-house-data
Plotly:https ://plotly.com/python/getting-started/
pip:https ://pypi.org/project/plotly/
px.data.gapminder():https ://stackoverflow.com/questions/73488602/line-graph-using-plotly
折线图:https ://plotly.com/python/line-charts/
DashApp:https ://dash.plotly.com/
散点图:https ://plotly.com/python/line-and-scatter/
分布图:https ://stackoverflow.com/questions/70328489/create-plotly-distplot-charts-in-plotly-express
Pokemon数据集:https ://www.kaggle.com/datasets/rounakbanik/pokemon
自定义带状图:https ://community.plotly.com/t/how-to-change-size-of-point-in-px-strip-plot/70506
群体图:https ://stackoverflow.com/questions/61493460/swarm-plots-in-plotly-plotly-express
极坐标条形图:https ://plotly.com/python/wind-rose-charts/
在plotly.express中创建填充轮廓图:https ://github.com/plotly/plotly.py/issues/2071#top
heart.csv:https ://www.kaggle.com/datasets/arezaei81/heartcsv
KDEHistogram2dContourplot:https ://community.plotly.com/t/overlaying-grid-over-contour-graph/38709
平行坐标图:https ://plotly.com/python/parallel-coordinates-plot/
平行类别图:https ://plotly.com/python/parallel-categories-diagram/
kc_house_data.csv数据集:https ://www.kaggle.com/datasets/shivachandel/kc-house-data
px.choropleth为数据集:https ://www.geeksforgeeks.org/choropleth-maps-using-plotly-in-python/
cv2.imread():https ://www.geeksforgeeks.org/how-to-display-image-using-plotly/
长按👇关注-数据STUDIO-设为星标,干货速递