Plotly 学习、示例与参数解读系列【1】概览

本文介绍了Plotly库在Python中的使用,包括plotly.graph_objs和plotly.express的差异,重点解析了Figure对象的结构和参数,如data、layout和frames。此外,还展示了plotly_express的简便参数和适用图表类型,如散点图、柱状图、直方图等。文章最后提及Plotly在统计、科学可视化、地图和AI领域的广泛应用。
摘要由CSDN通过智能技术生成

Plotly 学习、示例与参数解读系列

1 概览

plotly是一个基于javascript的绘图库,python语言对相关参数进行了封装,ploty默认是生成HTML网页文件,通过浏览器查看,也可以在jupyter notebook中显示。

plotly在python中绘图使用分三种:1、plotly.graph_objs; 2、plotly.express ; 3、dash。
plotly.express 对plotly进行了高级封装,已经整合到plotly中,不需要单独安装。plotly.express 也是调用plotly的绘图功能来实现。dash在使用上,可以将前面两个生成的图传给dash,也可以直接传一个配置字典。

Plotly express是官网推荐的使用入口。当快速绘制图时,优选plotly.express ,需要进行高级定制时,可以通过对Figure配置参数实现。

1.1 plotly/plotly_express能画哪些图

图表类型有:

  • 基础图形: scatter(散点), line(线条图), area(面积图), bar(柱状图), funnel(漏斗图), timeline(时间线图)
  • 整体与部分的表示: pie(饼图), sunburst(旭日图), treemap(树形图), icicle(冰柱图), funnel_area(面积漏斗图)
  • 一维分布: histogram(直方图), box(箱形图), violin(小提琴图), strip(长条图), ecdf()
  • 二维分布: density_heatmap(密度热力图), density_contour(密度等值线图)
  • 矩阵或图像输入: imshow
  • 三维: scatter_3d(三维散点图), line_3d(三维线条图)
  • 多维: scatter_matrix(矩阵散点图), parallel_coordinates(平行坐标图), parallel_categories(并行类别图)
  • 平铺地图: scatter_mapbox(地图散点图), line_mapbox(地图线条图), choropleth_mapbox(等高(值)区域地图), density_mapbox(热力密度地图)
  • 轮廓地图: scatter_geo(地理坐标散点图), line_geo(地理坐标线条图), choropleth(等高(值)区域地图)
  • 极坐标图: scatter_polar(极坐标散点图), line_polar(极坐标线条图), bar_polar(极坐标柱状图)
  • 三元图表: scatter_ternary(三元散点图), line_ternary(三元线条图)

1.2 结构速览

plotly/plotly_express都是生成和返回了Figure对象,为plotly.graph_objs._figure.Figure的实例。

1.2.1 Figure结构:

import plotly.graph_objects as go
go.Figure(
    data=[],
    layout=None,
    frames=None,
    skip_invalid=False,
    **kwargs,
)		

参数中:
data:绘图系列,如散点图、柱状图,包括数据及针对具体图的参数。
layout:x、y坐标轴、标题、图例等。
frames:动画显示时的参数配置。

1.2.2 plotly/plotly_express的Figure对象比较

分别以go和px为例看生成的数据。import时,plotly.graph_objects简写为go, plotly.express简写为px。

import plotly.graph_objects as go
import plotly.express as px
x=[1,2,3]
y=[4,5,6]
go_fig=go.Figure(
    data=[
        go.Scatter(
            x=x,
            y=y
        )
    ]
)
px_fig=px.scatter(x=x,y=y)

#二者均为Figure对象
print(type(go_fig),type(px_fig))
#可以用print直接查看dict数据,因此也可以用修改dict的方式修改相关参数和数据。
print("【go.Figure】\n",go_fig)
print("【px.Scatter】\n",px_fig)

输出为:

<class 'plotly.graph_objs._figure.Figure'> <class 'plotly.graph_objs._figure.Figure'>
【go.Figure】
 Figure({
    'data': [{'type': 'scatter', 'x': [1, 2, 3], 'y': [4, 5, 6]}], 'layout': {'template': '...'}
})
【px.Scatter】
 Figure({
    'data': [{'hovertemplate': 'x=%{x}<br>y=%{y}<extra></extra>',
              'legendgroup': '',
              'marker': {'color': '#636efa', 'symbol': 'circle'},
              'mode': 'markers',
              'name': '',
              'orientation': 'v',
              'showlegend': False,
              'type': 'scatter',
              'x': array([1, 2, 3], dtype=int64),
              'xaxis': 'x',
              'y': array([4, 5, 6], 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'}}}
})

1.2.3 Figure 参数

由Figure的结构来看,传入的参数为data、layout等。

data
在plotly中,单个的图形对象通常用trace来表示,如:
trace0 = go.Scatter(…)
trace1 = goLine(…)

data表示的即是一个个的trace,而非x、y这样的数据,data可以是对象列表[],也可以是对象元组()。

fig0=go.Figure(
	data=[
		go.Scatter(...),
		go.Bar(...),
		go.Line()
	]
)
fig1=go.Figure(
	data=(trace0,trace1)
)

layout
包括注释、x/y轴、颜色轴、标题、悬停提示、滚动条等,通常都是go.Layout.*中的子类。
可设置项包括:

frames
为plotly.graph_objs.Frame的实例元组或列表,用于动画帧的定义。

1.2.4 Figure更新和修改

Figure的更新比较灵活,可以按层次结构来改,也可以指定名称修改,也可以传入字典。详细的参数可以针对每一个图形来看。

方式一
Figure对象被组织成了树状结构,为dict字典格式,访问时也可以直接通过dict的路径访问。
如设置标题:

px_fig.layout.title.text="散点图" #或者:px_fig.layout.title="散点图"
px_fig.layout.title.font.color="red"
px_fig.show()

方式二
通过plotly的update函数。

  • data: update_traces()
  • layout: update_layout()

如方式一中的修改,用方式二来实现

px_fig.update_layout(title={"text":"散点图","font":{'color':'red'}})
#或者用_连接fig路径,如:
#px_fig.update_layout(title='散点图',title_font_color='blue')

1.3 plotly_express的参数

plotly_express在生成时,通常要指定的参数不多,确实是很epress。在生成时要指定的参数是比较有限的,参数包括了Figure结构的data和layout中的部分参数。生成fig后,就可以按Figure对象正常修改。

一些常见的参数有:
data_frame, x, y,symbol, range_x, range_y,color, hover_name, hover_data, labels,title等。

plotly_express的参数和默认值对比如下(如空白,表示无该参数),但plotly_express参数并没有**kwargs,所以要修改指定参数外的参数,还得通过生成的fig来进一步修改。

plotly_express的参数、调用的plotly模块和默认值一览表
在这里插入图片描述

1.4 应用领域及图表速览

应用领域包括统计、科学图表、地图、AI和机器学习等。如官网所示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值