4000字,25张精美交互图表,开启Plotly Express之旅

简介: Plotly Express 是一个新的高级 Python 可视化库,它是 Plotly.py 的高级封装,为复杂图表提供简单的语法。最主要的是 Plotly 可以与 Pandas 数据类型 DataFrame 完美的结合,对于数据分析、可视化来说实在是太便捷了,而且是完全免费的,非常值得尝试下面我们使用 Ployly 的几个内置数据集来进行相关图表绘制的演示

数据集


Plotly 内置的所有数据集都是 DataFrame 格式,也即是与 Pandas 深度契合的体现

不同国家历年GDP收入与人均寿命

包含字段:国家、洲、年份、平均寿命、人口数量、GDP、国家简称、国家编号

gap = px.data.gapminder()
gap2007 = gap.query("year==2007")
gap2007

Output

微信图片_20220522201307.png


餐馆的订单流水

包含字段:总账单、小费、性别、是否抽烟、星期几、就餐时间、人数

tips = px.data.tips()
tips

Output

微信图片_20220522201310.png


鸢尾花

包含字段:萼片长、萼片宽、花瓣长、花瓣宽、种类、种类编号

iris = px.data.iris()  
iris

Output

微信图片_20220522201315.png


风力数据

包含字段:方向、强度、数值

wind = px.data.wind()  
wind

Output

微信图片_20220522201317.png


2013年蒙特利尔市长选举投票结果

包括字段:区域、Coderre票数、Bergeron票数、Joly票数、总票数、胜者、结果(占比分类)

election = px.data.election() 
election

Output

微信图片_20220522201429.png


蒙特利尔一个区域中心附近的汽车共享服务的可用性

包括字段:纬度、经度、汽车小时数、高峰小时

carshare = px.data.carshare()
carshare

Output

微信图片_20220522201433.png




内置调色板


Plotly 还拥有众多色彩高级的调色板,使得我们在绘制图表的时候不再为颜色搭配而烦恼

卡通片的色彩和序列

px.colors.carto.swatches()

Output

微信图片_20220522201446.png


CMOcean项目的色阶

px.colors.cmocean.swatches()

Output

微信图片_20220522201449.png


还有其他很多调色板供选择,就不一一展示了,下面只给出代码,具体颜色样式可以自行运行代码查看

ColorBrewer2项目的色阶

px.colors.colorbrewer

周期性色标,适用于具有自然周期结构的连续数据

px.colors.cyclical

分散色标,适用于具有自然终点的连续数据

px.colors.diverging

定性色标,适用于没有自然顺序的数据

px.colors.qualitative

顺序色标,适用于大多数连续数据

px.colors.sequential



Plotly Express 基本绘图


散点图

Plotly 绘制散点图非常容易,一行代码就可以完成

px.scatter(gap2007, x="gdpPercap", y="lifeExp")

Output

image.gif微信图片_20220522201455.png

还可以通过参数 color 来区分不同的数据类别

px.scatter(gap2007, x="gdpPercap", y="lifeExp", color="continent")

Output

微信图片_20220522201727.png


这里每个点都代表一个国家,不同颜色则代表不同的大洲

可以使用参数 size 来体现数据的大小情况

px.scatter(gap2007, x="gdpPercap", y="lifeExp", color="continent", size="pop", size_max=60)

Output

微信图片_20220522201731.png


还可以通过参数 hover_name 来指定当鼠标悬浮的时候,展示的信息

image.gif


还可以根据数据集中不同的数据类型进行图表的拆分

px.scatter(gap2007, x="gdpPercap", y="lifeExp", color="continent", size="pop", 
           size_max=60, hover_name="country", facet_col="continent", log_x=True)

Output

微信图片_20220522201737.png


我们当然还可以查看不同年份的数据,生成自动切换的动态图表

px.scatter(gap, x="gdpPercap", y="lifeExp", color="continent", size="pop", 
           size_max=60, hover_name="country", animation_frame="year", animation_group="country", log_x=True,
          range_x=[100, 100000], range_y=[25, 90], labels=dict(pop="Population", gdpPercap="GDP per Capa", lifeExp="Life Expectancy"))

Output

微信图片_20220522201741.gif


地理信息图

Plotly 绘制动态的地理信息图表也是非常方便,通过这种地图的形式,我们也可以清楚的看到数据集中缺少前苏联的相关数据

px.choropleth(gap, locations="iso_alpha", color="lifeExp", hover_name="country", animation_frame="year", 
              color_continuous_scale=px.colors.sequential.Plasma, projection="natural earth")

Output

image.gif微信图片_20220522201922.gif

矩阵散点图

px.scatter_matrix(iris, dimensions=['sepal_width', 'sepal_length', 'petal_width', 'petal_length'], color='species', symbol='species')

Output

微信图片_20220522201912.png


平行坐标图

px.parallel_coordinates(tips, color='size', color_continuous_scale=px.colors.sequential.Inferno)

Output

微信图片_20220522201952.png


三元散点图

px.scatter_ternary(election, a="Joly", b="Coderre", c="Bergeron", color="winner", size="total", hover_name="district",
                   size_max=15, color_discrete_map = {"Joly": "blue", 
                   "Bergeron": "green", "Coderre":"red"} )

Output

微信图片_20220522201955.pngimage.gif


极坐标线条图

px.line_polar(wind, r="frequency", theta="direction", color="strength", 
            line_close=True,color_discrete_sequence=px.colors.sequential.Plotly3[-2::-1])

Output

微信图片_20220522201959.png


小提琴图

px.violin(tips, y="tip", x="sex", color="smoker", facet_col="day", facet_row="time",box=True, points="all", 
          category_orders={"day": ["Thur", "Fri", "Sat", "Sun"], "time": ["Lunch", "Dinner"]},
          hover_data=tips.columns)

Output

微信图片_20220522202032.png


极坐标条形图

px.bar_polar(wind, r="frequency", theta="direction", color="strength",
            color_discrete_sequence= px.colors.sequential.Plotly3[-2::-1])

Output

微信图片_20220522202035.png


并行类别图

px.parallel_categories(tips, color="size", color_continuous_scale=px.
            colors.sequential.Inferno)

Output

微信图片_20220522202038.png


直方图

px.histogram(tips, x="total_bill", color="smoker",facet_row="day", facet_col="time")

Output

微信图片_20220522202041.png


三维散点图

px.scatter_3d(election, x="Joly", y="Coderre", z="Bergeron", color="winner", 
              size="total", hover_name="district",symbol="result", 
              color_discrete_map = {"Joly": "blue", "Bergeron": "green", 
              "Coderre":"red"})

Output

微信图片_20220522202044.png


密度等值线图

px.density_contour(iris, x="sepal_width", y="sepal_length", color="species")

Output

微信图片_20220522202235.png


箱形图

px.box(tips, x="sex", y="tip", color="smoker", notched=True)

Output

微信图片_20220522202239.png


地理坐标线条图

px.line_geo(gap.query("year==2007"), locations="iso_alpha", 
            color="continent", projection="orthographic")

Output

微信图片_20220522202243.png


条线图

px.line(gap, x="year", y="lifeExp", color="continent", 
        line_group="country", hover_name="country",
        line_shape="spline", render_mode="svg")

Output

微信图片_20220522202248.png


面积图

px.area(gap, x="year", y="pop", color="continent", 
        line_group="country")

Output

微信图片_20220522202341.png


热力图

px.density_heatmap(iris, x="sepal_width", y="sepal_length", 
                   marginal_x="rug", marginal_y="histogram")

Output

微信图片_20220522202344.png


条形图

px.bar(tips, x="sex", y="total_bill", color="smoker", barmode="group")

Output

微信图片_20220522202347.png总体来说,Plotly/Plotly Express 还是非常强大绘图工具,值得我们细细研究~

相关文章
|
14天前
|
数据可视化 搜索推荐 大数据
Plotly Express可视化图表
【10月更文挑战第19天】Plotly Express 是 Plotly 的高级 API,提供了一种简单直观的方法来创建各种类型的交互式图表。本文介绍了如何使用 Plotly Express 快速生成从简单散点图到复杂大数据集图表的多种可视化效果,包括安装方法、基本示例、复杂图表、动态图表和子图布局等内容。通过本文,您将学会如何利用 Plotly Express 进行高效的数据可视化。
25 0
|
1月前
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
1月前
|
开发框架 JavaScript 前端开发
使用 Node.js 和 Express 构建 Web 应用
【10月更文挑战第2天】使用 Node.js 和 Express 构建 Web 应用
|
2月前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实战指南
【9月更文挑战第6天】在数字化时代的潮流中,后端开发作为支撑现代Web和移动应用的核心,其重要性不言而喻。本文将深入浅出地介绍如何使用Node.js及其流行的框架Express来搭建一个高效、可扩展的后端服务。通过具体的代码示例和实践技巧,我们将探索如何利用这两个强大的工具提升开发效率和应用性能。无论你是后端开发的新手还是希望提高现有项目质量的老手,这篇文章都将为你提供有价值的见解和指导。
|
15天前
|
JavaScript 中间件 关系型数据库
构建高效的后端服务:Node.js 与 Express 的实践指南
在后端开发领域,Node.js 与 Express 的组合因其轻量级和高效性而广受欢迎。本文将深入探讨如何利用这一组合构建高性能的后端服务。我们将从 Node.js 的事件驱动和非阻塞 I/O 模型出发,解释其如何优化网络请求处理。接着,通过 Express 框架的简洁 API,展示如何快速搭建 RESTful API。文章还将涉及中间件的使用,以及如何结合 MySQL 数据库进行数据操作。最后,我们将讨论性能优化技巧,包括异步编程模式和缓存策略,以确保服务的稳定性和扩展性。
|
22天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
41 1
|
10天前
|
Web App开发 JavaScript 前端开发
探索后端开发:Node.js与Express的完美结合
【10月更文挑战第33天】本文将带领读者深入了解Node.js和Express的强强联手,通过实际案例揭示它们如何简化后端开发流程,提升应用性能。我们将一起探索这两个技术的核心概念、优势以及它们如何共同作用于现代Web开发中。准备好,让我们一起开启这场技术之旅!
26 0
|
10天前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实践
【10月更文挑战第33天】在数字化时代的浪潮中,后端服务的效率和可靠性成为企业竞争的关键。本文将深入探讨如何利用Node.js和Express框架构建高效且易于维护的后端服务。通过实践案例和代码示例,我们将揭示这一组合如何简化开发流程、优化性能,并提升用户体验。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
12天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的融合之道
【10月更文挑战第31天】在追求快速、灵活和高效的后端开发领域,Node.js与Express框架的结合如同咖啡遇见了奶油——完美融合。本文将带你探索这一组合如何让后端服务搭建变得既轻松又充满乐趣,同时确保你的应用能够以光速运行。
21 0
|
1月前
|
JSON JavaScript 前端开发
Node.js Express 框架
10月更文挑战第7天
29 2