Python库Plotly学习笔记

news2025/1/11 10:07:34

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.coloradmin.cn/o/2131499.html

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

相关文章

栈和队列的算法题目(C语言)

1. 括号匹配问题 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 利用栈后入先出的特性解题 1.判断字符串是否为空 为空返回 2.创建栈&#xff0c;遍历字符串 第一个字符是左括号的情况&#xff1a;入栈->继续遍历下一个字符 第一个字符是右括号的情况&#xf…

Caffenie配合Redis做两级缓存,Redis发布订阅实现缓存一致更新

一、什么是两级缓存 在项目中。一级缓存用Caffeine&#xff0c;二级缓存用Redis&#xff0c;查询数据时首先查本地的Caffeine缓存&#xff0c;没有命中再通过网络去访问Redis缓存&#xff0c;还是没有命中再查数据库。具体流程如下 二、简单的二级缓存实现-v1 目录结构 2…

手写排班日历

手写排班日历&#xff1a; 效果图&#xff1a; vue代码如下&#xff1a; <template><div class"YSPB"><div class"title">排班日历</div><div class"banner"><span classiconfont icon-youjiantou click&qu…

【机器学习】分类与回归——掌握两大核心算法的区别与应用

【机器学习】分类与回归——掌握两大核心算法的区别与应用 1. 引言 在机器学习中&#xff0c;分类和回归是两大核心算法。它们广泛应用于不同类型的预测问题。分类用于离散的输出&#xff0c;如预测图像中的对象类型&#xff0c;而回归则用于连续输出&#xff0c;如预测房价。…

.net core 通过Sqlsugar生成实体

通过替换字符串的方式生成代码&#xff0c;其他代码也可以通这种方式生成 直接上代码 设置模板 将这几个模板文件设置为&#xff1a;嵌入资源 模板内容&#xff1a; using SqlSugar;namespace {Namespace}.Domain.Admin.{ModelName}; /// <summary> /// {TableDisplay…

浪潮光纤交换机FS8500、FS8600、FS8900端口数量授权扩容方法

浪潮光纤交换机FS8500、FS8600、FS8900系列是OEM博通G610、G620、G630光纤交换机&#xff0c;激活方法也是和博通一样的 获取设备License id 登录光纤交换机&#xff0c;可以使用Console线&#xff0c;也可以使用网线ssh登录默认ip&#xff1a;10.77.77.77&#xff0c;这里推…

【北京迅为】《STM32MP157开发板使用手册》- 第二十六章Cortex-M4 GPIO_蜂鸣器实验

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

浅谈电动汽车公共充电桩布局设计及解决方案

摘要&#xff1a;随着社会现代化的深入推进&#xff0c;环境保护和资源利用可持续化发展的重要性愈发显著。电动汽车因其在节能、效率、环保等方面的突出优势&#xff0c;开始越来越多的进入城市交通系统。然而目前充电桩等相关配套设施缺乏合理的设置依据&#xff0c;不利于电…

【区块链通用服务平台及组件】中金数据云链平台 | FISCO BCOS应用案例

近年来&#xff0c;湖北省、武汉市区块链产业加快发展&#xff0c;在供应链管理、产品溯源等诸多领域逐步落地&#xff0c;形成了良好创新 创业氛围。2022 年 8 月&#xff0c;武汉市正式获批建设国家区块链发展先导区。中金数据&#xff08;武汉&#xff09;超算技术有限公司以…

组织数据能力评估模型一览

组织数据能力的成熟度等评估模型主要包括&#xff1a;DCMM、DSMM、DCAM、DAMA等。最新版《DMBOK2.1》 中&#xff0c;对于数据成熟度评估模型的选择给出了应考虑的标准&#xff1a; 可访问性&#xff1a;实践以非技术术语陈述&#xff0c;传达活动的功能要义。全面性&#xff…

HBase在大数据实时处理中的角色

HBase是一个分布式的、面向列的开源NoSQL数据库&#xff0c;它建立在Hadoop的HDFS之上&#xff0c;被设计用于处理大规模数据集。HBase非常适合于需要随机实时读写访问的应用程序&#xff0c;例如大数据分析、数据仓库和实时数据处理等场景。本文将探讨HBase是如何进行大数据实…

SpinalHDL之数据类型(六)

本文作为SpinalHDL学习笔记第五十九篇,介绍SpinalHDL的Vec数据类型。 目录: 1.描述(Description) 2.声明(Declaration) 3.操作符(Operators) ⼀、描述(Description) Vec是定义了⼀组带有标号的信号的复合信号(基于SpinalHDL基础类别)。 ⼆、声明(Declaration) 声明向量的…

最新消息,OpenAI o 1 一种新的大型语言模型正在被引入

据最新消息。 我们正在引入OpenAI o 1&#xff0c;这是一种新的大型语言模型&#xff0c;经过强化学习训练&#xff0c;可以执行复杂的推理。O 1在回答之前思考--它可以在对用户做出响应之前产生一个很长的内部思考链。 OpenAI o 1在竞争性编程问题&#xff08;Codeforces&am…

GaN挑战Si价格底线?英飞凌推出全球首个12英寸GaN晶圆技术

昨日&#xff0c;英飞凌宣布已成功开发出全球首个12英寸功率氮化镓GaN晶圆技术&#xff0c;并计划在今年的德国慕尼黑展上向公众展示首批12英寸GaN晶圆。 据英飞凌介绍&#xff0c;12英寸晶圆上的芯片生产在技术上更先进&#xff0c;效率也有显著提高&#xff0c;相较于8英寸晶…

Serverless 安全新杀器:云安全中心护航容器安全

作者&#xff1a;胡志广(独鳌) 云安全中心对于 Serverless 容器用户的价值 从云计算发展之初&#xff0c;各大云厂商及传统安全厂商就开始围绕云计算的形态来做安全解决方案。传统安全与云计算安全的形态与做法开始发生变化&#xff0c;同时随着这 10 多年的发展&#xff0c;…

JavaWeb开发中为什么Controller里面的方法是@RequestMapping?

在Java Web开发中&#xff0c;尤其是在使用Spring MVC框架时&#xff0c;RequestMapping注解被广泛应用于Controller层的方法上&#xff0c;这是因为RequestMapping是Spring MVC提供的一个核心注解&#xff0c;用于将HTTP请求映射到相应的处理器类或处理器方法上。通过这种方式…

安全隔离上网的有效途径:沙盒

在数字化浪潮日益汹涌的今天&#xff0c;网络安全成为了不可忽视的重要议题。沙箱技术作为一种高效的隔离机制&#xff0c;为企业和个人提供了一种在享受网络便利的同时&#xff0c;保障系统安全的解决方案。本文旨在深入探讨沙箱技术如何做到隔离上网&#xff0c;从而为用户提…

什么开放式耳机好用?2024五款宝藏品牌推荐!

在移动互联网时代&#xff0c;耳机已成为许多人生活中不可或缺的一部分&#xff0c;无论是在通勤路上还是运动时&#xff0c;它们都能提供音乐享受&#xff0c;同时减轻压力。然而&#xff0c;长时间佩戴入耳式耳机可能会引起耳道不适甚至炎症。因此&#xff0c;开放式耳机因其…

STM32 如何生成随机数

目录 一、引言 二、STM32 随机数发生器概述 三、工作原理 1.噪声源 2.线性反馈移位寄存器&#xff08;LFSR&#xff09; 3.数据寄存器&#xff08;RNG_DR&#xff09; 4.监控和检测电路&#xff1a; 5.控制和状态寄存器 6.生成流程 四、使用方法 1.使能随机数发生器 …

洛谷 P3065 [USACO12DEC] First! G

原题点这里​​​​​​ 题目来源于&#xff1a;洛谷 题目本质&#xff1a;字符串&#xff0c;Hash&#xff0c;字典树Trie 题目思路&#xff1a; 因为涉及到字典序的问题&#xff0c;那么应该能想到字典树。很显然字符串s1如果比字符串s2的字典序小的话&#xff0c;只有两种…