Python绘图神器Plotly安装、使用及导出图像教程

news2024/12/23 5:28:33

1. Plotly安装

Plotly 是一个快速完善并崛起的交互式的、开源的绘图库库,Python 库则是它的一个重要分支。现已支持超过40种独特的图表类型,涵盖了广泛的统计、金融、地理、科学和三维用例。

Python 中可以使用 pip 或者 conda 安装 Plotly:

pip install plotly
conda install plotly

2. Plotly绘图教程

2.1 折线图与散点图

折线图不仅可以表示数量的多少,而且可以反映同一事物在不同时间里的发展变化的情况,易于显示数据变化趋势,可以直观地反映这种变化以及各组之间的差别。

import numpy as np
import plotly.graph_objects as go

x = np.arange(5)
y1 = np.random.rand(5) * 5
y2 = np.random.rand(5) * 5
y3 = np.random.rand(5) * 5

fig = go.Figure(
    data=[
        # name为图例名,textfont设置字体属性,mode为绘图模式,marker设置颜色否则后续导出图像会丢失颜色(不导出可不设置该参数也有默认颜色)
        go.Scatter(name='Lines', x=x, y=y1, textfont=dict(size=25), mode='lines', marker=dict(color='#0068C9')),
        go.Scatter(name='Markers', x=x, y=y2, textfont=dict(size=25), mode='markers'),
        go.Scatter(name='Lines&Markers', x=x, y=y3, textfont=dict(size=25), mode='lines+markers'),
    ]
)

# 设置图像格式
fig.update_layout(
    autosize=False, width=1200, height=650,  # 取消自动大小,手动设置宽高
    title='This is title',  # 标题
    xaxis=dict(title='X', nticks=5),  # 设置X轴属性
    yaxis=dict(title='Y', nticks=11, range=(0, 5)),  # 设置Y轴属性,nticks表示划分为多少段
    showlegend=True  # 显示图例
)

fig.show()

在这里插入图片描述

2.2 饼图

饼图用于强调各项数据占总体的占比,强调个体和整体的比较。

fig = go.Figure(
    # textinfo表示显示内容是百分比还是标签,hoverinfo表示鼠标悬停的显示内容,pull表示每一块往外拉的比例
    go.Pie(labels=['Train data', 'Valid data'], values=[7, 3],
           textinfo='percent', hoverinfo='label+percent',
           textfont=dict(size=15), pull=[0, 0.05],
           title='训练集划分', titlefont=dict(size=18),
           marker=dict(colors=['#0068C9', '#83C9FF']))
)

fig.update_layout(
    autosize=False, width=600, height=450
)

fig.show()

在这里插入图片描述

2.3 直方图

直方图虽然也和条形图一样通过矩形的长度表示数值,但他的宽度一般用于表示各组的组距,因此其高度与宽度均有意义,适合展示大量数据集的统计结果,直方图的表示的数据通常是连续排列,而柱状图则是分开排列。

x = np.random.rand(1000) * 30  # 生成1000个0-30之间的数

fig = go.Figure(
    data=[
        go.Histogram(name='X', x=x)
    ]
)

fig.update_layout(
    autosize=False, width=1350, height=600,
    xaxis=dict(title='Value'),
    yaxis=dict(title='Count'),
    showlegend=True,
)

fig.update_traces(opacity=0.6)  # 设置透明度

fig.show()

在这里插入图片描述

多个直方图覆盖:

x1 = np.random.rand(1000) * 30
x2 = np.random.rand(500) * 30

fig = go.Figure(
    data=[
        go.Histogram(name='X1', x=x1),
        go.Histogram(name='X2', x=x2)
    ]
)

fig.update_layout(
    barmode='overlay',  # 设置覆盖模式
    autosize=False, width=1350, height=600,
    xaxis=dict(title='Value'),
    yaxis=dict(title='Count'),
    showlegend=True,
)

fig.update_traces(opacity=0.6)  # 设置透明度

fig.show()

在这里插入图片描述

2.4 条形图

条形图用于比较各组数据的差异性,强调进行个体间的比较。

x = np.arange(10)
y = np.random.randint(30, size=10) + 1  # 生成10个1~30的整数

fig = go.Figure(
    data=[
        go.Bar(name='Bar1', x=x, y=y, textfont=dict(size=25))
    ]
)

fig.update_layout(
    autosize=False, width=800, height=500,
    title='Bar',
    xaxis=dict(title='X'),
    yaxis=dict(title='Y'),
    showlegend=True
)

fig.show()

在这里插入图片描述

2.5 热力图

热力图是一种特殊的图表,它是一种通过对色块着色来显示数据的统计图表,在绘图时,需要指定每个颜色映射的规则(一般以颜色的强度或色调为标准);比如颜色越深的表示数值越大、程度越深或者颜色越浅的数值越大、程度越深。热力图适合用于查看总体的情况、观察特殊值或者显示多个变量之间的差异性、检测它们之间是否存在相关性等等。

df = pd.read_csv('../data/MODIS/test_data.csv', nrows=10)  # [10 rows x 22 columns]
print(df.head(1))
#    FSC       SR1       SR2       SR3  ...       LST       A2T   SC  LCT
# 0  1.0  0.587019  0.551739  0.565093  ...  0.129661  0.205581  1.0  0.8

pearson = df.corr()
print(pearson.values.shape)  # (22, 22)
features = df.columns.values  # 或者features = pearson.index.values
print(features)  # ['FSC' 'SR1' 'SR2' 'SR3' ...]

fig = go.Figure(
    data=[
        go.Heatmap(x=features, y=features, z=pearson.values, colorscale='blues')
    ]
)

fig.update_layout(
    autosize=False, width=900, height=900,
    title='皮尔逊相关系数热力图',
    # 以下注释的两行代码用于保存本地时调整字体的大小防止显示不全
    # xaxis=dict(title='Feature', titlefont=dict(size=10), tickfont=dict(size=8)),
    # yaxis=dict(title='Feature', titlefont=dict(size=10), tickfont=dict(size=8)),
    xaxis=dict(title='Features'),
    yaxis=dict(title='Features'),
    showlegend=True
)

fig.show()

在这里插入图片描述

3. Plotly导出图像到本地

首先我们需要安装两个依赖项:orcapsutilorca 在 PyPi 存储库中不可用,因此需要使用 conda 安装:

conda install -c plotly plotly-orca psutil

或者直接安装 kaleido 模块:

pip install kaleido

安装完成后即可使用 Plotly 的 io 库导出图像(格式可以是 SVG、JPG、PNG等):

import plotly.io as pio

pio.write_image(fig, 'images/figure.svg')

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用校园账号登录WOS(Web of Science)并检索文献

使用校园账号登录WOS(Web of Science)并检索文献 写在最前面登录WOS检索文献文献检索文献检索结果分析文章类型(Document Types)发表年份(Publication years)期刊(Publication/Source Titles&am…

chatgpt赋能python:Python中n个数相加–实现简单、计算准确

Python中n个数相加 – 实现简单、计算准确 Python是一门功能强大的编程语言,能够在各个领域得到广泛应用。在数据处理和科学领域,Python是最受欢迎的编程语言之一。在Python中,n个数相加是一种常见的操作,它可以在数据处理中做到…

计算机网络六 应用层

应用层 网络应用模型 客户/服务器模型(C/S) 客户/服务器模型是一种常见的网络应用模型。客户端是指与用户直接交互的计算机应用程序,服务器则是提供服务的计算机系统或应用程序。在客户/服务器模型中,客户端发送请求,服务器端回应请求。客户…

Redis7实战加面试题-高阶篇(案例落地实战bitmap/hyperloglog/GEO)

案例落地实战bitmap/hyperloglog/GEO 面试题: 抖音电商直播,主播介绍的商品有评论,1个商品对应了1系列的评论,排序展现取前10条记录 用户在手机App上的签到打卡信息:1天对应1系列用户的签到记录,新浪微博、钉钉打卡签…

ADC和DAC常用的56个技术术语

采集时间 采集时间是从释放保持状态(由采样-保持输入电路执行)到采样电容电压稳定至新输入值的1 LSB范围之内所需要的时间。采集时间(Tacq)的公式如下: ​混叠 根据采样定理,超过奈奎斯特频率的输入信号频率为“混叠”频率。也就是说,这些频…

一图看懂 importlib_metadata 模块:用于提供第三方访问Python包的元数据的库,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 importlib_metadata 模块:用于提供第三方访问Python包的元数据的库,资料整理笔记(大全) 🧊摘要🧊模块…

rpm 方式部署 MongoDB

文章目录 rpm 方式部署 MongoDB1. 下载 rpm 包2. 上传到服务器3. 执行安装4. 启动5. 登陆6. 开启远程登陆7. 测试远程登陆8. 开启 auth 认证9. 远程登陆验证 rpm 方式部署 MongoDB 参考地址:https://blog.csdn.net/baidu_23491131/article/details/127664931 1. 下载…

PixiJS 源码深入解读:用于循环渲染的 Ticker 模块

大家好,我是前端西瓜哥。这次来看看 PixiJS 的 Ticker 模块源码。 Ticker 的作用是 在下一帧绘制前调用监听器,PixiJS 使用它来不断对画面进行重绘。 版本为 7.2.4。 使用 在我们 实例化 PIXI.Application 时,PIXI.Application 内部注册的…

国内免费可用的ChatGPT网站【实时更新】

文章目录 1.什么是ChatGPT2.ChatGPT的基础技术3.ChatGPT工作原理4.ChatGPT应用场景5.ChatGPT局限性6.ChatGPT的未来发展7.国内免费ChatGPT镜像写在最后 ChatGPT国内能用吗:ChatGPT在国内是无法使用的。你肯定要问我怎样才能体验到ChatGPT的神奇魔力呢?文…

Linux-0.11 kernel目录进程管理system_call.s详解

Linux-0.11 kernel目录进程管理system_call.s详解 模块简介 本节主要介绍了在Linux-0.11中关于系统调用的相关实现。Linux-0.11使用int 0x80中断以及eax寄存器中存储的功能号去调用内核中所提供的功能,在系统调用发生的过程中伴随着用户态向内核态的主动切换。 需…

App开发需要了解的基本开发技术

近年来,随着智能手机的普及和互联网的高速发展,移动端 APP应用开发越来越受到人们的欢迎。现在,应用程序开发已成为一项热门职业,并成为许多人寻求高薪职业的首选。然而,要成功地在移动端 APP中应用程序,开…

分享几封好用的外贸人催单模版

给外贸人说在前面: 虽然说是催单模版,但是请带入你们公司产品,你们客户具体情况来套入,不能一模一样,再好的模版,再好的话术,大家一起用,就成了毫无价值的废料。 请灵活运用&#…

【阿里巴巴国际站API接口】商品详情接口,代码封装系列

为了进行电商平台 alibaba 的API开发,首先我们需要做下面几件事情。 1)开发者注册一个账号 2)然后为每个alibaba应用注册一个应用程序键(App Key) 。 3)下载 alibaba API的SDK并掌握基本的API基础知识和调用 4&#xf…

Linux一学就会——线程互斥

Linux一学就会——线程互斥 Linux线程的互斥 进程线程间的互斥相关背景概念 临界资源:多线程执行流共享的资源就叫做临界资源 临界区:每个线程内部,访问临界自娱的代码,就叫做临界区 互斥:任何时刻,互斥…

Python3数据分析与挖掘建模(3)探索性数据分析

1. 概述 探索性数据分析(Exploratory Data Analysis,EDA)是一种数据分析的方法,用于探索和理解数据集的特征、关系和分布等。EDA旨在揭示数据中的模式、异常值、缺失值等信息,并为后续的分析和建模提供基础。以下是关…

20-01 走进微服务与Spring Cloud

Java架构师系列导航目录 认识SpringCloud——外带全家桶 Alibaba组件库 Nacos 中心化动态配置 持久化规则服务发现(DNS RPC)权重路由无缝SC K8s Sentinel(流控组件) 突发流量、削峰填谷、流量整形实时熔断实时监控大盘 S…

汽车和地铁的无人驾驶了解

01汽车无人驾驶技术 汽车相对地铁列车,控制设备的安装空间较为有限,不同车辆的个体差异较大,其无人驾驶技术的实现方案需要更简约,主流的方案通常是通过多种车载传感器(如摄像头、激光雷达、毫米波雷达、北斗/GPS、惯性…

实时频谱-3.1实时频谱分析仪测量

RSA 测量类型 泰克RSA 可以在频域、时域、调制域和统计域中工作。 频域测量 基本频域测量是实时 RF 数字荧光显示(DPX)频谱显示测量、频谱显示测量和频谱图显示测量功能。 DPX 频谱 DPX 频谱测量对 RSA 发现其它分析仪漏掉的难检信号的能力至关重要。在所有泰克 RSA 中&am…

聚观早报|知乎发布搜索聚合开始内测;苹果7月关闭我的照片流服务

今日要闻:知乎发布“搜索聚合”即日开启内测;iOS版ChatGPT下载量突破50万次;苹果7月关闭“我的照片”流服务;首款国产介入手术机器人亮相;马斯克回应多年前嘲笑比亚迪 知乎发布“搜索聚合”即日开启内测 5 月 28 日消…

ChatGTP全景图 | 背景+技术篇

引言:人类以为的丰功伟绩,不过是开端的开端……我们在未来100年取得的技术进步,将远超我们从控制火种到发明车轮以来所取得的一切成就。——By Sam Altman 说明:ChatGPT发布后,我第一时间体验了它的对话、翻译、编程、…