Python库Plotly学习笔记

Plotly是一个用于创建交互式图形的Python库。它提供了丰富的图表类型,包括散点图、线图、柱状图、热力图、饼图等,以及高级的可视化功能,如动画、交互、数据缩放和拖动等。

Plotly库的主要特点:

  1. 交互式图表:Plotly创建的图表是交互式的,用户可以在图表上进行缩放、拖动、选择数据等操作,并实时看到结果。
  2. 丰富的图表类型:Plotly支持多种图表类型,可以满足不同领域的数据可视化需求。
  3. 易于使用:Plotly提供了简洁的API,使得用户可以轻松创建和定制图表。
  4. 集成性:Plotly可以与Pandas、NumPy等Python数据处理库无缝集成,方便用户进行数据分析和可视化。
  5. 跨平台:Plotly可以在Web浏览器、Jupyter Notebook、Dash应用程序等多种环境中展示图表。

如何安装Plotly?

安装Plotly的方法主要依赖于你使用的编程环境。一般来说,如果你使用的是Python,你可以通过pip工具来安装Plotly库。以下是在Python环境中安装Plotly的步骤:

  1. 打开你的命令行工具(在Windows系统中,你可以通过Win+R打开运行窗口并输入cmd后回车,以管理员身份启动命令行)。
  2. 在命令行中输入以下命令来安装Plotly:pip install plotly。这个命令会从Python库官网下载并安装Plotly库。

Plotly库基本结构

Plotly库结构主要由几个关键模块组成,这些模块协同工作以创建各种类型的数据可视化图表。

以下是Plotly库的主要模块及其功能:

  1. plotly.plotly:这个模块包含需要与Plotly服务器交互的函数。它提供了本地机器与Plotly服务之间的接口,使得用户能够利用Plotly的在线功能,如数据保存、分享以及与Web的无缝集成。
  2. plotly.graph_objs:这是Plotly库中最核心的模块,它包含了构成图表的各种对象的类定义。这些图形对象包括但不限于散点图、方框图、直方图等,它们用于生成和/或修改Plotly图的每个特征。此外,这个模块还定义了Figure和Layout对象,它们分别用于表示整个图表和数据轨迹的布局。
  3. plotly.tools:这个模块包含了许多有助于增强Plotly体验的功能。这些功能可能包括数据的预处理、图表的优化以及其他辅助功能。

注意:plotly.express模块可以一次创建整个图。它在内部使用graph_objects并返回graph_objects.Figure实例。

在使用Plotly库时,用户通常首先使用plotly.graph_objs模块中的类来创建数据轨迹和布局,然后使用这些对象来创建Figure对象。最后,通过plotly.plotly模块或其他方式(如使用Plotly的离线模式)将图表渲染出来。

示例:

import plotly.express as px # Creating the Figure instance
fig = px.line(x=[1,2, 3], y=[1, 2, 3]) # printing the figure instance
print(fig)

输出

Figure({'data': [{'hovertemplate': 'x=%{x}<br>y=%{y}<extra></extra>','legendgroup': '','line': {'color': '#636efa', 'dash': 'solid'},'marker': {'symbol': 'circle'},'mode': 'lines','name': '','orientation': 'v','showlegend': False,'type': 'scatter','x': array([1, 2, 3], dtype=int64),'xaxis': 'x','y': array([1, 2, 3], dtype=int64),'yaxis': 'y'}],'layout': {'legend': {'tracegroupgap': 0},'margin': {'t': 60},'template': '...','xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'x'}},'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'y'}}}
})

图形以树来表示,其中根节点具有三个顶层属性-data, layout和frames,命名节点称为“attributes”。考虑上面的例子,layout.legend是一个嵌套字典,其中legend是字典中的键,其值也是一个字典。

开始学习

在学习了Plotly的安装和基本结构之后,让我们使用plotly定义的预定义数据集创建一个简单的图。

import plotly.express as px # Creating the Figure instance
fig = px.line(x=[1, 2, 3], y=[1, 2, 3]) # showing the plot
fig.show()

在这里插入图片描述
在上面的示例中,导入了返回Figure实例的plotly.express模块。我们通过传递要绘制的点的x,y坐标创建了一个简单的折线图。

创建不同类型的图表

使用plotly,我们可以创建40多种图表,每个图表都可以使用plotly.express和plotly.graph_objects类创建。下面来看一下常见的几种图表:

折线图
Plotly中的折线图是一个很好的补充,它可以管理各种类型的数据并组装易于风格化的统计数据。使用px.line,每个数据位置都表示为2D空间中的一个标记的顶点(其位置由x和y列给出)。

示例:

import plotly.express as px # using the iris dataset
df = px.data.iris() # plotting the line chart
fig = px.line(df, x="species", y="petal_width") # showing the plot
fig.show()

在这里插入图片描述

条形图

条形图是数据的图形表示,它用矩形条表示分类数据,矩形条的高度或长度与它们所表示的值成比例。换句话说,它是数据集的图形表示。这些数据集包含代表长度或高度的变量的数值。

示例:

import plotly.express as px # using the iris dataset
df = px.data.iris() # plotting the bar chart
fig = px.bar(df, x="sepal_width", y="sepal_length") # showing the plot
fig.show()

在这里插入图片描述
直方图

直方图包含一个矩形区域,用于显示统计信息,该统计信息与变量的频率及其在连续数值区间中的宽度成比例。将一组数据点管理到不同指定范围的图形表示。

示例:

import plotly.express as px # using the iris dataset
df = px.data.iris() # plotting the histogram
fig = px.histogram(df, x="sepal_length", y="petal_width") # showing the plot
fig.show()

在这里插入图片描述
散点图和气泡图

散点图是一组虚线点,用于表示水平轴和垂直轴上的各个数据片段。两个变量的值沿沿着X轴和Y轴绘制的图形,结果点的模式揭示了它们之间的相关性。

气泡图是带有气泡的散点图(彩色填充圆圈)。气泡的大小取决于数据中的另一个变量。它可以使用plotly.express的scatter()方法创建。

散点图示例:

import plotly.express as px # using the iris dataset
df = px.data.iris() # plotting the scatter chart
fig = px.scatter(df, x="species", y="petal_width") # showing the plot
fig.show()

在这里插入图片描述
气泡图示例:

import plotly.express as px # using the iris dataset
df = px.data.iris() # plotting the bubble chart
fig = px.scatter(df, x="species", y="petal_width", size="petal_length", color="species") # showing the plot
fig.show()

在这里插入图片描述
饼图

饼图是一种圆形统计图形,它被划分为切片以说明数字比例。它描绘了一个特殊的图表,使用“饼状切片”,其中每个扇区显示数据的相对大小。圆形图表以半径的形式切割成描述相对频率或幅度的段,也称为圆图。

示例:

import plotly.express as px # using the tips dataset
df = px.data.tips() # plotting the pie chart
fig = px.pie(df, values="total_bill", names="day") # showing the plot
fig.show()

在这里插入图片描述
箱形图

箱形图也称为须状图,用于显示具有最小值、第一四分位数、中位数、第三四分位数和最大值等属性的数据值集的汇总。在箱形图中,从第一四分位数到第三四分位数创建一个框,一条垂直线也在那里穿过中位数处的框。这里x轴表示要绘制的数据,而y轴表示频率分布。

示例:

import plotly.express as px # using the tips dataset
df = px.data.tips() # plotting the box chart
fig = px.box(df, x="day", y="total_bill") # showing the plot
fig.show()

在这里插入图片描述
小提琴图

小提琴图是一种可视化不同变量的数值数据分布的方法。它类似于Box Plot,但在每一侧都有一个旋转的图,提供有关y轴上密度估计的更多信息。密度被镜像和翻转,结果形状被填充,创建一个类似小提琴的图像。小提琴图的优点是它可以显示分布中的细微差别,而这些细微差别在箱形图中是无法察觉的。

示例:

import plotly.express as px # using the tips dataset
df = px.data.tips() # plotting the violin chart
fig = px.violin(df, x="day", y="total_bill")# showing the plot
fig.show()

在这里插入图片描述
甘特图

甘特图(Gantt Chart)是一种用于展示项目计划执行过程的条形图。它主要用于项目管理,帮助管理者清晰地了解项目的进度、任务分配以及时间规划。甘特图通过直观的图形展示,使得项目相关人员能够更快速地理解和分析项目的状态。

在甘特图中,横轴代表时间,纵轴代表任务或活动。每个任务或活动在图中用一条条形表示,条形的长度表示该任务或活动所需的时间,条形的位置表示该任务或活动在时间轴上的开始和结束时间。通过这种方式,甘特图能够清晰地展示项目的整体进度以及各个任务或活动之间的时间关系。

示例:

import plotly.figure_factory as ff # Data to be plotted
df = [dict(Task="A", Start='2020-01-01', Finish='2009-02-02'), dict(Task="Job B", Start='2020-03-01', Finish='2020-11-11'), dict(Task="Job C", Start='2020-08-06', Finish='2020-09-21')] # Creating the plot
fig = ff.create_gantt(df) 
fig.show()

在这里插入图片描述
等高线图

等高线图也称为水平图,是一种用于进行多变量分析和在二维空间中可视化三维图的工具。如果我们将X和Y视为我们想要绘制的变量,则响应Z将被绘制为X-Y平面上的切片,因此轮廓有时被称为Z切片或等响应。

等高线图用于查看某个值(Z)相对于两个值(X,Y)的变化的情况。

示例:

import plotly.graph_objects as go
import numpy as np # Creating the X, Y value that will
# change the values of Z as a function
feature_x = np.arange(0, 50, 2) 
feature_y = np.arange(0, 50, 3) # Creating 2-D grid of features 
[X, Y] = np.meshgrid(feature_x, feature_y) Z = np.cos(X / 2) + np.sin(Y / 4) # plotting the figure
fig = go.Figure(data =go.Contour(x = feature_x, y = feature_y, z = Z)) fig.show()

在这里插入图片描述
热力图

热力图被定义为使用颜色来可视化矩阵值的数据的图形表示。在此,为了表示更常见的值或更高的活性,使用基本上带红色的颜色,并且为了表示较不常见的值或活性值,优选较暗的颜色。热力图也由着色矩阵的名称定义。

示例:

import plotly.graph_objects as go 
import numpy as np feature_x = np.arange(0, 50, 2) 
feature_y = np.arange(0, 50, 3) # Creating 2-D grid of features 
[X, Y] = np.meshgrid(feature_x, feature_y) Z = np.cos(X / 2) + np.sin(Y / 4) # plotting the figure
fig = go.Figure(data =go.Heatmap(x = feature_x, y = feature_y, z = Z,)) fig.show()

在这里插入图片描述

误差条

对于表示2D数据点的函数,如px.scatter、px.line、px.bar等,误差条作为列名称给出,该列名称是error_x(对于x位置上的误差)和error_y(对于y位置上的误差)的值。误差条是数据的图形表示形式,用于图表,以暗示报告数据中的误差或不确定性。

示例:

import plotly.express as px # using the iris dataset
df = px.data.iris() # Calculating the error field
df["error"] = df["petal_length"]/100# plotting the scatter chart
fig = px.scatter(df, x="species", y="petal_width",error_x="error", error_y="error") # showing the plot
fig.show()

在这里插入图片描述
3D折线图

plotly中的折线图是绘图中管理各种类型数据和组装易于风格化统计的一个非常方便和出色的附加功能。在px.line_3d中,每个数据位置都表示为3D空间中一个标记的顶点(其位置由x、y和z列给出)。

示例:

import plotly.express as px # data to be plotted
df = px.data.tips() # plotting the figure
fig = px.line_3d(df, x="sex", y="day", z="time", color="sex") fig.show()

在这里插入图片描述
3D散点图

3D散点图可以绘制二维图形,可以通过映射多达三个附加变量来增强,同时使用色调,大小和样式参数的语义。所有的参数控制视觉语义,用于识别不同的子集。使用冗余语义有助于使图形更易于访问。它可以使用plotly.express类的scatter_3d函数创建。

示例:

import plotly.express as px # Data to be plotted
df = px.data.iris() # Plotting the figure
fig = px.scatter_3d(df, x = 'sepal_width', y = 'sepal_length', z = 'petal_width', color = 'species') fig.show()

在这里插入图片描述
3D曲面图

曲面图是具有X、Y、Z三维数据的图。曲面图不是显示单个数据点,而是在因变量Y之间具有函数关系,并具有两个自变量X和Z。此图用于区分因变量和自变量。

示例:

import plotly.graph_objects as go 
import numpy as np # Data to be plotted
x = np.outer(np.linspace(-2, 2, 30), np.ones(30)) 
y = x.copy().T 
z = np.cos(x ** 2 + y ** 2) # plotting the figure
fig = go.Figure(data=[go.Surface(x=x, y=y, z=z)]) fig.show()

在这里插入图片描述

与绘图交互

Plotly提供了各种与绘图交互的工具,如添加下拉菜单、按钮、滑块等。这些可以使用绘图布局的更新菜单属性创建。让我们来看看如何做这些。

在Plotly中创建下拉菜单

下拉菜单是菜单按钮的一部分,始终显示在屏幕上。每个菜单按钮都与一个菜单小部件相关联,当点击它时,它可以显示该菜单按钮的选项。在plotly中,有4种方法可以通过使用更新菜单方法来修改图表。

  • restyle:修改数据或数据属性
  • relayout:修改布局属性
  • update:修改数据和布局属性
  • animate:开始或暂停动画

示例:

import plotly.graph_objects as px
import numpy as np
# creating random data through randomint
# function of numpy.random
np.random.seed(42)# Data to be Plotted
random_x = np.random.randint(1, 101, 100)
random_y = np.random.randint(1, 101, 100)plot = px.Figure(data=[px.Scatter(x=random_x,y=random_y,mode='markers',)
])# Add dropdown
plot.update_layout(updatemenus=[dict(buttons=list([dict(args=["type", "scatter"],label="Scatter Plot",method="restyle"),dict(args=["type", "bar"],label="Bar Chart",method="restyle")]),direction="down",),]
)plot.show()

在这里插入图片描述
在上面的例子中,我们为相同的数据创建了两个图表。这些图可以使用菜单访问。

为绘图创建滑块和选择器

在plotly中,范围滑块是一个自定义范围类型的输入控件。它允许在指定的最小和最大范围之间选择一个值或一个值范围。范围选择器是用于选择要在图表中显示的范围的工具。它提供了用于选择图表中预配置范围的按钮。它还提供了输入框,可以手动输入最小和最大日期。

示例:

import plotly.graph_objects as px 
import plotly.express as go 
import numpy as np df = go.data.tips() x = df['total_bill'] 
y = df['day'] plot = px.Figure(data=[px.Scatter( x=x, y=y, mode='lines',) 
]) plot.update_layout( xaxis=dict( rangeselector=dict( buttons=list([ dict(count=1, step="day", stepmode="backward"), ]) ), rangeslider=dict( visible=True), ) 
) plot.show() 

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git 更新LingDongGui问题解决

今天重新更新灵动gui的代码&#xff0c;以便使用最新的arm-2d&#xff0c;本来以为是比较简单的一件事情&#xff08;因为以前已经更新过一次&#xff09;&#xff0c;却搞了大半天&#xff0c;折腾不易啊&#xff0c;简单记录下来&#xff0c;有同样遇到问题的同学参考&#x…

SSM框架学习(三、MyBatis实践:提高持久层数据处理效率)

目录 一、Mybatis简介 1.简介 2.持久层框架对比 3.快速入门&#xff08;基于Mybatis3方式&#xff09; 4.ibatis方式的实现和原理 5.ibatis与mybatis之间的关系 二、Mybatis基本使用 1.向 sql 语句传参 &#xff08;1&#xff09;mybatis日志输出配置 &#xff08;2&…

存储课程学习笔记5_iouring的练习(io_uring,rust_echo_bench,fio)

我们知道&#xff0c;在处理大量高并发网络时&#xff0c;一般考虑并发&#xff0c;以及设计对应的方案&#xff08;比如select,poll,epoll&#xff09;等。 那么如果频繁进行文件或者磁盘的操作&#xff0c;如何考虑性能和并发&#xff0c;这里就可以考虑用到io_uring。 0&a…

RK3588镜像打包制作,替换文件系统

1.在开发板上安装async apt-get async 2.在另一台linux机器上执行命令拷贝文件系统 注意&#xff1a; 这里使用root权限或者账户 mkdir rootfs rsync -avx root192.168.1.3:/ rootfs 3.制作空镜像文件 先去开发板上验证自己的系统使用了多少空间&#xff0c;然后输入命令制…

rancker 图形化界面

rancker 图形化界面 图形化界面进行k8s集群的管理 rancher自带监控————普罗米修斯 #在master和两个node上都操作 [rootmaster01 opt]# rz -E rz waiting to receive. [rootmaster01 opt]# docker load -i rancher.tar ​ #在master上操作 [rootmaster01 opt]# docker pul…

828华为云征文|华为云Flexus X搭建借贷管理系统、二次开发借贷小程序 前端源码uniapp

在华为云828 B2B企业节的盛宴中&#xff0c;Flexus X实例以其卓越的算力性能和灵活的资源配置脱颖而出。对于追求极致性能、渴望在借贷管理、电商交易等场景中脱颖而出的您来说&#xff0c;Flexus X无疑是最佳拍档。搭载创新加速引擎&#xff0c;让您的自建MySQL、Redis、Nginx…

浙大数据结构:04-树6 Complete Binary Search Tree

这道题利用了完全二叉树的性质&#xff0c;我也参考了一些代码写的。 &#xff08;自己一开始写了别的方法&#xff0c;但一直过不了最后一个测试点&#xff0c;红温了&#xff09; 机翻&#xff1a; 1、条件准备 用vector存输入的数据&#xff0c;另一个数组存输出的结果&a…

实战外网配置——光猫桥接+路由器PPPoE拨号+防火墙外网链路健康检查+外网流量负载均衡

一、适用场景&#xff1a; 1、企业规模较大时&#xff0c;1条公网带宽流量可能不足&#xff0c;需要用到多条公网出口时。 2、企业有业务需要静态ip映射&#xff0c;但是因静态ip专线价格较高&#xff0c;所以需要拨号光纤承载较多的下行流量。 3、当公网出口有多条链路&#…

学习笔记 - 知识图谱的符号表示方法

学习笔记 - 知识图谱的符号表示方法 说明&#xff1a; 首次发表日期&#xff1a;2024-09-13个人阅读学习并摘录成笔记 知识表示的相关名词定义 以下内容摘录自 Knowledge Graphs Applied 2.3小节&#xff0c;然后AI翻译人工润色。 实体&#xff08;Entities&#xff09;—表…

Python | 练习作业 2

为学生登录系统新增搜索功能。 第二天作业的解题思路&#xff1a; # 1.创建一个空列表保存搜索结果 # 2.让用户输入要搜索的内容 # 3.遍历学生信息&#xff0c;检查学生的id name age gender score # 中的属性值 是否跟用户搜索的内容一致 # 4.如果有一致的属性 那么就将该学生…

TikTok运营需要的独立IP如何获取?

TikTok作为当下炙手可热的社交媒体平台&#xff0c;吸引了众多个人创作者和企业进驻。在进行TikTok运营时&#xff0c;许多经验丰富的用户都倾向于选择独立IP。那么&#xff0c;TikTok运营为什么需要独立IP&#xff1f;又该如何获取呢&#xff1f;本文将详细为您解答这些问题。…

vue2基础系列教程之v-model及面试高频问题

v-model是表单组件里面的核心知识点&#xff0c;这个指令给我们写表单业务带来了很大的方便。 元素标签上的 v-model 指令用于双向绑定数据,它是一个语法糖&#xff0c;可以用于代替 v-bind:value 和 input 例如&#xff1a;<input v-model"message" placeholder…

Springboot中mybatis的使用

一.创建Springboot项目并加载依赖 1.利用IDEA创建SpringBoot项目&#xff0c;并勾选必须依赖&#xff0c;步骤如下&#xff08;IDEA版本为2024版&#xff09; 注意&#xff1a; 1.首先更换镜像源&#xff0c;否则加载配置环境比较慢&#xff0c;网上搜阿里的镜像源就行。 2…

Python数据类型详解:这12个类型你都知道吗?

在Python中&#xff0c;数据类型是编程的基石&#xff0c;它们定义了可以操作的数据的种类。Python是一种动态类型语言&#xff0c;意味着你不需要显式地声明变量的类型&#xff1b;Python解释器会自动推断出变量所存储数据的类型。Python提供了多种内置数据类型&#xff0c;这…

c++类和对象(3):默认成员函数(下)

1.拷贝构造函数 如果⼀个构造函数的第⼀个参数是自身类类型的引用&#xff0c;且任何额外的参数都有默认值&#xff0c;则此构造函数也叫做拷贝构造函数&#xff0c;也就是说拷贝构造是⼀个特殊的构造函数。 c规定&#xff1a;类类型的传值传参必须用拷贝构造 1.1拷贝构造函数…

OpenAI 刚刚推出 o1 大模型!!突破LLM极限

北京时间 9 月 13 日午夜&#xff0c;OpenAI 正式发布了一系列全新的 AI 大模型&#xff0c;专门用于应对复杂问题。 这一新模型的出现代表了一个重要突破&#xff0c;其具备的复杂推理能力远远超过了以往用于科学、代码和数学等领域的通用模型&#xff0c;能够解决比之前更难的…

近期常见软件测试面试题

1、软件的生命周期&#xff1a; 又称为软件生命期、生存期&#xff0c;是指从形成开发软件概念起&#xff0c;所开发的软件使用以后&#xff0c;直到失去使用价值消亡为止的整个过程。 一般来说&#xff0c;整个生命周期包括&#xff1a;计划&#xff08;定义&#xff09;、开…

上汽大众:存储成本节约85%,查询性能提升5倍|OceanBase案例

近日&#xff0c;上汽大众汽车有限公司&#xff08;简称“上汽大众”&#xff09;的积分卡券等关键业务系统&#xff0c;已成功升级至 OB Cloud 云数据库。借助 OceanBase 原生分布式数据库的卓越性能与先进技术&#xff0c;实现了存储成本的大幅降低&#xff0c;高达85%&#…

初级软件测试面试题汇总

一、请描述如何划分缺陷与错误严重性和优先级别&#xff1f; 给软件缺陷与错误划分严重性和优先级的通用原则&#xff1a; &#xff08;1&#xff09;表示软件缺陷所造成的危害和恶劣程度。 &#xff08;2&#xff09;优先级表示修复缺陷的重要程度和次序。 严重性&#xf…

Python 课程6-Pandas 和 Matplotlib库

前言 在数据科学和数据分析领域&#xff0c;Pandas 和 Matplotlib 是两个最常用的 Python 库。Pandas 主要用于数据处理和分析&#xff0c;而 Matplotlib 则用于数据的可视化。它们的结合能够帮助我们快速、直观地展示数据的趋势和规律。在这篇详细的教程中&#xff0c;教程中将…