1 介绍:
=====
1.1 Plotly 是一款用来做数据分析和可视化的在线平台,功能非常强大。
1.2 Plotly是一个非常著名且强大的开源数据可视化框架,它通过构建基于浏览器显示的web形式的可交互图表来展示信息。
1.3 具有多种语言python、javascript、matlab、R、Jupyter、Excel等的API接口。
1.4 Plotly有在线和离线两种模式。
1.5 优点:
1.5.1 可开发web版可视化界面。
1.5.2 相比matplotlib、R更加现代化。
1.5.3 支持3D可视化绘图。
2 说明:
=====
2.1 本次先讲解:离线版、微软vscode版、python版代码的常见作图。(网上多是以jupyter notebook为开发工具的在线版或者离线版,随着微软代码编辑器vscode的使用普及,所以本人重点介绍vscode版离线版的python代码)
2.2 环境:deepin-linux深度操作系统,python3.8,谷歌浏览器,微软vscode编辑器。
2.3 对官方的代码:进行修改,注释。
2.4 基本作图通俗易懂,拿来就可以使用。
2.5 高级的交互式作图下次讲解。
2.6 网址打开奇慢:
https://plot.ly/python/
3 安装:
=====
pip install plotly #sudo pip install plotly #一般是这样#pip3.8 install plotly #本机安装#pip install plotly --upgrade #如果已经安装,升级就这样
4 柱状图:
4.1 bar代码:
import plotly as pyimport plotly.graph_objs as gopyplt = py.offline.plot #离线设置# 2组数据的柱状图trace0 = go.Bar(x = ['Jan','Feb','Mar','Apr', 'May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],y = [20,14,25,16,18,22,19,15,12,16,14,17],name = 'Primary Product',marker=dict(color = 'rgb(49,130,189)'))trace1 = go.Bar(x = ['Jan','Feb','Mar','Apr', 'May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],y = [19,14,22,14,16,19,15,14,10,12,12,16],name = 'Secondary Product',marker=dict(color = 'rgb(204,204,204)'))data = [trace0,trace1]layout = go.Layout(title = 'plotly柱状图bar')fig = go.Figure(data = data, layout = layout)#文件名,并保存在根目录下,也可以指定目录pyplt(fig, filename='plotly的bar.html')
4.2 堆叠柱状图代码:
import plotly as pyimport plotly.graph_objs as gopyplt = py.offline.plottrace1 = go.Bar( x=['giraffes', 'orangutans', 'monkeys'], y=[20, 14, 23], name='SF Zoo')trace2 = go.Bar( x=['giraffes', 'orangutans', 'monkeys'], y=[12, 18, 29], name='LA Zoo')data = [trace1, trace2]#堆叠柱状图layout = go.Layout(barmode='stack',title = 'plotly的堆叠柱状图')fig = go.Figure(data=data, layout=layout)pyplt(fig, filename='plotly的stackbar.html')
5 饼状图
5.1 plotly的pie.py代码:
import plotly as pyimport plotly.graph_objs as gopyplt = py.offline.plot #离线设置#定义数值labels = ['产品1','产品2','产品3','产品4','产品5']values = [38.7,15.33,19.9,8.6,17.47]#定义trace或者datatrace = [go.Pie(labels=labels, values=values)]layout = go.Layout(title = 'plotly的pie图')fig = go.Figure(data = trace, layout = layout)pyplt(fig, filename='plotly的pie.html')
5.2 shanpie.py代码
import plotly as pyimport plotly.graph_objs as gopyplt = py.offline.plot#数据定义labels = ['产品1', '产品2','产品3', '产品4', '产品5']values = [30, 25, 15, 22, 8]colors = ['#FFFF00', '#FF0000', '#E066FF', '#0D0D0D']#trace或者data数据定义trace = [go.Pie(labels = labels, values = values,rotation = 30,opacity = 1,showlegend = False, #图例显示否,True就是显示pull = [0.1,0,0,0,0], #0.1为第一组数据出来pull=产品1=30的那一组hoverinfo = 'label+percent', textinfo = 'percent', # textinfo = 'value',textfont = dict(size = 30, color = 'white'),marker = dict(colors = colors, line = dict(color = '#000000', width = 2)) ) ]fig = go.Figure(data = trace)#注意fig中无layout布局pyplt(trace, filename='plotly的shanpie.html')
5.3 plotly的环形圆,circlepie.py代码:
import plotly as pyimport plotly.graph_objs as gopyplt = py.offline.plotlabels = ['完成','未完成']values = [0.8,0.2]trace = [go.Pie( labels = labels, values = values, hole = 0.7, #空闲大小比值 hoverinfo = "label + percent")]#标题定义layout = go.Layout(title = 'plotly的环形圈图')fig = go.Figure(data = trace, layout = layout)pyplt(fig, filename='circlepie.html')
6 折线图line
6.1 方法一:
#导出模块import plotlyimport plotly.graph_objs as go#直接把数据写入离线模块里plotly.offline.plot({"data": [ go.Scatter(x=[1, 2, 3, 4], y=[4, 3, 2, 1]), go.Scatter(x=[2, 1, 4, 3], y=[3, 1, 4, 2]),],"layout": go.Layout()}, auto_open=True) #自动打开#注意以上并未出现代码生成的html文件名和保存地址#采用默认法,如下参数介绍,如filename='temp-plot.html''''plot(figure_or_data, show_link=False, link_text='Export to plot.ly', validate=True, output_type='file', include_plotlyjs=True, filename='temp-plot.html', auto_open=True, image=None, image_filename='plot_image', image_width=800, image_height=600, config=None, include_mathjax=False, auto_play=True, animation_opts=None)'''
6.2 方法二:
#常规方法import plotly as pyimport plotly.graph_objs as gopyplt = py.offline.plot#数据资料设置trace0 = go.Scatter( x=[1, 2, 3, 4], y=[10, 15, 13, 17])trace1 = go.Scatter( x=[1, 2, 3, 4], y=[16, 5, 11, 9])#如果数据较多较多,以后还可以读取数据方法,那是高级法data = [trace0, trace1]#布局并定义标题layout = go.Layout(title = '常规方法的折线图line')#定义画布,挂在data和layoutfig = go.Figure(data = data, layout = layout)pyplt(fig, filename='line.html')
7 散点图代码:
#随机散点图的常规方法import plotly as pyimport plotly.graph_objs as goimport numpy as nppyplt = py.offline.plot #离线设置#定义数据来源#trace1 = go.Scatter(data = go.Scatter(y = np.random.randn(500),mode = 'markers',marker = dict( size = 16, color = np.random.randn(500), colorscale = 'Viridis', showscale = True ))#data = [trace1] #注意被注释掉的是规范写法,但也可以直接data取代trace1layout = go.Layout(title = 'plotly的Scatter的散点图')fig = go.Figure(data = data, layout = layout)pyplt(fig, filename='plotly的Scatter.html')
=====以上为常规基本作图,高级作图未完待续=========
我觉得比pyecharts还好用,github非常火的可视化作图,当然它的功能步仅仅是本文基本作图,高级作图下次介绍。
自己整理,分享出来,喜欢的就点赞、收藏和转发。