【数据可视化】Plotly Express绘图库使用

Plotly Express是一个基于Plotly库的高级Python可视化库。它旨在使绘图变得简单且直观,无需繁琐的设置和配置。通过使用Plotly Express,您可以使用少量的代码创建具有丰富交互性和专业外观的各种图表。以下是Plotly Express的一些主要特点和优势:

  1. 简单易用:Plotly Express提供了一组直观的函数和方法,使得创建各种类型的图表变得非常简单。您可以使用少量的代码生成复杂的图表,而无需深入了解底层的绘图细节。

  2. 支持多种图表类型:Plotly Express支持多种常见的图表类型,包括散点图、线图、柱状图、饼图、箱线图、等高线图、地图等。您可以根据需要选择合适的图表类型来呈现数据。

  3. 内置交互性:通过使用Plotly Express,您可以轻松地为生成的图表添加交互功能。您可以缩放、平移、选择数据点、查看工具提示等,以便更好地探索数据和图表。

  4. 自动美化:Plotly Express会自动为生成的图表添加专业的样式和外观。这意味着您不需要手动进行大量的配置和调整,即可获得漂亮的图表。当然,您也可以通过一些参数来自定义图表的外观。

  5. 整合Plotly图表生态系统:Plotly Express是Plotly图表生态系统的一部分,可以与其他Plotly库和工具进行无缝集成。您可以将Plotly Express与Plotly的其他组件(如Dash)一起使用,构建交互性强大的数据可视化应用程序。

Plotly Express与matplotlib和pyecharts相比有以下几个优势:

  1. 交互性:Plotly Express内置了交互性,使用户能够在图表中进行缩放、平移、选择数据点以及查看工具提示等操作。这种交互性使得数据的探索和分析变得更加直观和灵活。而matplotlib和pyecharts在交互性方面相对有限。

  2. 美观性:Plotly Express提供了一组精心设计的默认样式,使得生成的图表外观美观并具有专业感。您可以获得漂亮的图表,而无需过多的配置和调整。相比之下,matplotlib需要更多的手动配置来实现类似的外观,而pyecharts则提供了一些模板和预设主题,但美观性较Plotly Express稍逊一筹。

  3. 多种图表类型:Plotly Express支持多种常见的图表类型,包括散点图、线图、柱状图、饼图、箱线图、等高线图、地图等。这使得用户可以根据需要选择最适合的图表类型来呈现数据。matplotlib也提供了多种图表类型,但在某些类型的图表上,Plotly Express的绘制和配置更为简单和直观。

  4. Pythonic接口:Plotly Express的API设计符合Pythonic风格,使用起来更加直观和易于理解。它提供了一组简洁的函数和方法,使用户能够以一种自然的方式生成图表。相比之下,matplotlib的API较为繁琐,需要更多的代码来实现相同的效果,而pyecharts则使用了类似于JavaScript的配置方式。

  5. 与Plotly生态系统的集成:Plotly Express是Plotly图表生态系统的一部分,与其他Plotly库和工具无缝集成。这意味着您可以将Plotly Express与其他Plotly组件(如Dash)一起使用,构建交互性强大的数据可视化应用程序。这种集成性使得Plotly Express成为一个功能丰富且灵活的选择。

import pandas as pd
import plotly_express as px

gapminder = pd.DataFrame(px.data.gapminder())
gapminder.rename(columns={"year": "年份", "country": "国家", "continent": "所在洲",
                          "lifeExp": "预期寿命", "pop": "人口", "gdpPercap": "人均GDP",
                          "iso_alpha": "ISO国家代码", "iso_num": "ISO数字代码"}, inplace=True)
gapminder['所在洲'] = gapminder["所在洲"].map({"Asia": "亚洲", "Europe": "欧洲",
                                         "Africa": "非洲", "Americas": "美洲", "Oceania": "大洋洲"})
# line 图
fig = px.line(
    gapminder,  # 数据集
    x="年份",  # 横坐标
    y="预期寿命",  # 纵坐标
    color="所在洲",  # 颜色的数据
    line_group="所在洲",  # 线性分组
    hover_name="国家",  # 悬停hover的数据
    line_shape="spline",  # 线的形状
    render_mode="svg"  # 生成的图片模式
)
fig.show()

# area 图
fig = px.area(
    gapminder,  # 数据集
    x="年份",  # 横坐标
    y="人口",  # 纵坐标
    color="所在洲",  # 颜色
    line_group="国家"  # 线性组别
)
fig.show()

fig = px.scatter(
    gapminder  # 绘图DataFrame数据集
    , x="人均GDP"  # 横坐标
    , y="预期寿命"  # 纵坐标
    , color="所在洲"  # 区分颜色
    , size="人口"  # 区分圆的大小
    , size_max=60  # 散点大小
)
fig.show()

fig = px.scatter(
    gapminder  # 绘图使用的数据
    , x="人均GDP"  # 横纵坐标使用的数据
    , y="预期寿命"  # 纵坐标数据
    , color="所在洲"  # 区分颜色的属性
    , size="人口"  # 区分圆的大小
    , size_max=60  # 圆的最大值
    , hover_name="国家"  # 图中可视化最上面的名字
    , animation_frame="年份"  # 横轴滚动栏的属性year
    , animation_group="国家"  # 标注的分组
    , facet_col="所在洲"  # 按照国家country属性进行分格显示
    , log_x=True  # 横坐标表取对数
    , range_x=[100, 100000]  # 横轴取值范围
    , range_y=[25, 90]  # 纵轴范围
    , labels=dict(pop="人口",  # 属性名字的变化,更直观
                  gdpPercap="人均GDP",
                  lifeExp="预期寿命")
)
fig.show()

fig = px.choropleth(
    gapminder,  # 数据集
    locations="ISO国家代码",  # 配合颜色color显示
    color="预期寿命",  # 颜色的字段选择
    hover_name="国家",  # 悬停字段名字
    animation_frame="年份",  # 注释
    color_continuous_scale=px.colors.sequential.Plasma,  # 颜色变化
    projection="natural earth"  # 全球地图
)
fig.show()

fig = px.scatter_geo(
    gapminder,  # 数据
    locations="ISO国家代码",  # 配合颜色color显示
    color="所在洲",  # 颜色
    hover_name="国家",  # 悬停数据
    size="人口",  # 大小
    animation_frame="年份",  # 数据帧的选择
    projection="natural earth"  # 全球地图
)
fig.show()

fig = px.line_geo(
    gapminder,  # 数据集
    locations="ISO国家代码",  # 配合和color显示数据
    color="所在洲",  # 颜色
    projection="orthographic")  # 球形的地图
fig.show()

iris = pd.DataFrame(px.data.iris())
iris.rename(columns={"sepal_width": "花萼宽度", "sepal_length": "花萼长度", "petal_width": "花瓣宽度",
                     "petal_length": "花瓣长度", "species": "品种", "species_id": "品种编号"}, inplace=True)
iris['品种'] = iris["品种"].map({"setosa": "山鸢尾", "versicolor": "变色鸢尾",
                                         "virginica": "维吉尼亚鸢尾"})

fig = px.scatter(
    iris,  # 数据集
    x="花萼宽度",  # 横坐标
    y="花萼长度"  # 纵坐标
)
fig.show()

fig = px.scatter(
    iris,  # 数据集
    x="花萼宽度",  # 横坐标
    y="花萼长度",  # 纵坐标
    color="品种",  # 颜色
    marginal_x="histogram",  # 横坐标直方图
    marginal_y="rug"  # 细条图
)
fig.show()

fig = px.scatter(
    iris,  # 数据集
    x="花萼宽度",  # 横坐标
    y="花萼长度",  # 纵坐标
    color="品种",  # 颜色
    marginal_y="violin",  # 纵坐标小提琴图
    marginal_x="box",  # 横坐标箱型图
    trendline="ols"  # 趋势线
)
fig.show()

fig = px.scatter_matrix(
    iris,  # 数据
    dimensions=["花萼宽度", "花萼长度", "花瓣宽度", "花瓣长度"],  # 维度选择
    color="品种")  # 颜色
fig.show()

fig = px.parallel_coordinates(
    iris,  # 数据集
    color="品种编号",  # 颜色
    labels={"品种编号": "品种",  # 各种标签值
            "花萼宽度": "花萼宽度",
            "花萼长度": "花萼长度",
            "花瓣长度": "花瓣长度",
            "花瓣宽度": "花瓣宽度"},
    color_continuous_scale=px.colors.diverging.Tealrose,
    color_continuous_midpoint=2)
fig.show()

fig = px.density_contour(
    iris,  # 数据集
    x="花萼宽度",  # 横坐标值
    y="花萼长度",  # 纵坐标值
    color="品种",  # 颜色
    marginal_x="rug",  # 横轴为线条图
    marginal_y="histogram"  # 纵轴为直方图
)
fig.show()


wind = pd.DataFrame(px.data.wind())
wind.rename(columns={"frequency": "频率", "direction": "方向", "strength": "强度"}, inplace=True)
fig = px.bar_polar(
    wind,   # 数据集
    r="频率",   # 半径
    theta="方向",  # 角度
    color="强度",  # 颜色
    template="plotly_dark",  # 主题
    color_discrete_sequence=px.colors.sequential.Plasma_r)  # 颜色变化
fig.show()

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/27925.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2020310

Selenium: 基于WebDriver协议的 Web应用程序测试的工具 精简版: selenium脚本通过http请求发送命令和参数给httpserver httpserver通过json wire protocol格式转发命令和参数给webdriver webdriver通过原生API或者JavaScript代码执行操作给浏览器 浏览器通过json wi…

什么是AI业务流程质检,如何用它做好销售和服务过程监督

近几年,随着语音转写、语义理解和机器学习等技术的成熟,越来越多的企业开始部署基于AI技术的智能质检系统,来帮助坐席、销售和服务团队提高沟通质量管理能力,同时提升沟通中的客户体验。 不过,不论是最初的人工质检&a…

object类型(equals、hashCode、getClass、getName)

equals方法的改写 Override//重写equals方法,重写方法后对比的属性值(没有重写前对比的是属性值)public boolean equals(Object obj) {Students s (Students) obj;return this.name.equals(s.name) && this.age s.age;}public clas…

2000-2019年280多个地级市就业人数数据(全市)/城市就业数据

2000-2019年280多个地级市就业人数数据(全市) 1、时间范围:2000-2019年 2、范围:包括280多个地级市 3、来源:城市NJ 4、统计口径:全市 5、单位:万人 6、缺失情况:与城市年鉴缺失情况…

Mysql中联合索引的最左匹配

联合索引 通过将多个字段组合成一个索引,该索引就被称为联合索引。 比如,将商品表中的 product_no 和 name 字段组合成联合索引(product_no, name),创建联合索引的方式如下: CREATE INDEX index_product_no_name ON product(pr…

剑指 Offer 09: 用两个栈实现队列

简单明了,带你直接看懂题目和例子。 输入: ["CQueue","appendTail","deleteHead","deleteHead"] 这里是要执行的方法,从左到右执行 [[],[3],[],[]]对应上面的方法,是上面方法的参数。CQ…

docker资源控制cgroup

一、CPU控制 cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespace隔离起来的资源, 还可以为资源设置权重、计算使用量、操控进程启停等等。所以cgroups (Control groups) 实现了对资源的配额和度量。 cgroups有四大功能: 资源限制:可以…

前后端交互三、Ajax加强

零、文章目录 前后端交互三、Ajax加强 1、XMLHttpRequest的基本使用 (1)什么XMLHttpRequest XMLHttpRequest(简称 xhr)是浏览器提供的 Javascript 对象,通过它,可以请求服务器上的数据资源。jQuery 中的…

企业电子招标采购系统源码java 版本 Spring Cloud + Spring Boot

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

JVM原理:JVM垃圾回收算法(通俗易懂)

目录 前言正文垃圾标记算法引用类型强引用软引用弱引用虚引用 引用计数法循环引用问题 根可达性分析法虚拟机栈(栈帧的局部变量表)中的引用方法区中类静态属性引用方法区中常量引用本地方法栈(Native方法)引用 垃圾回收算法标记清…

InstructGPT:Training language models to follow instructions with human feedback

Training language models to follow instructions with human feedback 通过人类反馈的微调,在广泛的任务中使语言模型与用户的意图保持一致 aligning language models with user intent on a wide range of tasks by fine-tuning with human feedback 实验动机 …

AssetStudio工程导入VS各种报错解决

AssetStudio下载地址:https://github.com/Perfare/AssetStudio 工程导入,生成解决方案,然后报了一堆错。让我们来一个一个的解决 这个错误,是缺少System.Runtime.InteropServices.RuntimeInformation.dll文件,下载并添…

20230612 set1打卡

哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

【leetcode】189.轮转数组

方法1: 先把原数组拷贝一份,然后先将原数组的后k个拷贝,再将前numsSize-k个拷贝 void rotate(int* nums, int numsSize, int k) {//可能存在k>numsSize的情况,先处理kk k % numsSize;//拷贝数组int arr[numsSize];int i 0;in…

计算机网络 | socket IPC(本地套接字domain)

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

大模型研究方向0611

文章目录 1. 大模型自身角度认知角度2.大模型的成本角度3. 大模型的评测角度4.大模型的安全角度5. 大模型结构角度 附上刘知远老师的见解:https://hub.baai.ac.cn/view/27283 1. 大模型自身角度认知角度 即大模型的理解,现在,大众普遍认为L…

0202性能分析-索引-MySQL

1 索引语法 创建索引 CREATE [UNIQUE|FULLTEXT] INDEX index_name ON table_name(index_column_name,...);Index_name:规范为idx_表名_字段名... 查看索引 SHOW INDEX FROM table_name;删除索引 DROP INDEX index_name ON table_name;按照下列要求,创建…

V5.0.X版本 EMQX安装、卸载 以及使用

V5.0.X版本 EMQX安装、卸载 以及使用 一、卸载二、下载安装2.1 下载2.2 安装2.2.1 rpm安装2.2.2 tar安装 2.3 测试启动 三、EMQX使用 回到目录    回到末尾 EMQX为大规模分布式物联网 MQTT 消息服务器。提供高效可靠连接海量物联网设备,实时处理分发消息与事件流数…

leangoo领歌敏捷工具中,如何快速查看项目内所有任务卡片

项目管理员能不能快捷的查看整个项目内的所有任务? 能不能快捷查看项目内某一个成员的所有任务? 能不能快捷的在项目内通过一些条件选择查看任务? 可以导出项目内某一个人的所有任务吗?方便做一些统计 等等... 这些现在Leang…

武职301班-day01

实现永和小票页面 效果图 问题分析 把一个大的开发任务,先进行任务分析,把完成这个任务需要的技术点和开发步骤写出来。 开发分析 特点: htmlcss实现 1)小票有宽度限制 2)字体大小不一样,大部分字体大小…