目录
最近学习了《Python数据分析 基于Plotly的动态可视化绘图》(孙洋洋等人著)一书,为了方便以后查看,还是写一下为好。
该书所有代码网址链接: link.
注册成为博文视点社区用户,可以找到该书: link.
并且可以下载实例代码和资源文件哦。
Plotly简介
Pandas和Plotly互动式绘图模块可以称为Python数据分析和Python量化分析量大重量级模块库。Pandas是业界公认的大数据工程一线最好的解决方案;Plotly是最好的绘图工具之一。
安装环境
安装Plotly方法:打开cmd命令,代码`pip install plotly`即可,若要升级到最新版,则代码`pip install plotly -- upgrade`
(我使用的是Pycharm环境,在里面直接下载而不需要打开cmd命令行)
离线绘图
离线绘图功能允许在没有网络情况下绘图,并把图像保存到本地,有两种方法实现:
- 使用plotly.offline.plot()方法会在本地新建一个HTML文件,并可以选择是否在浏览器中打开这个文件。
- 使用plotly.offline.iplot()方法会在Jupyter Notebook中直接绘图,而不需要创建一个HTML文件
在线绘图操作查看帮助:
import plotly.plotly as py
help(py.plot)
离线绘图操作查看帮助:
import plotly
help(plotly.offline.plot)
基础图形
散点图
简单的散点图
import plotly as py
import plotly.graph_objs as go
# -------pre def
pyplt=py.offline.plot
# -------code
#creaet random data with numpy
import numpy as np
N=100
random_x=np.linspace(0,1,N)
random_y0=np.random.randn(N)+5
random_y1=np.random.randn(N)
random_y2=np.random.randn(N)-5
#create traces
trace0=go.Scatter(x=random_x,y=random_y0,mode='markers',name='markers')
trace1=go.Scatter(x=random_x,y=random_y1,mode='lines',name='lines')
trace2=go.Scatter(x=random_x,y=random_y2,mode='lines+markers',name='lines+markers')
data=Data([trace0,trace1,trace2])
pyplt(data,filename='散点图.html')
print('ok') #提示已经绘制完成
结果:
对散点图进行样式设置
import plotly as py
import plotly.graph_objs as go
import numpy as np
# ------pre def
pyplt=py.offline.plot
# ------code
N=500
x=np.random.randn(N)
trace0=go.Scatter(
x=np.random.randn(N),
y=np.random.randn(N)+2,
name='Above',
mode='markers+lines',
marker=dict(
size=10, #设置点的宽度
color='rgba(152,0,0,0.8)', #设置点的颜色
line=dict(
width=2, #设置线条的宽度
color='rgb(0,0,0)', #设置线条的颜色
)
)
)
trace1=go.Scatter(
x=np.random.randn(N),
y=np.random.randn(N)-2,
name='Below',
mode='markers',
marker=dict(
size=10, #设置点的宽度
color='rgba(255,0,0,0.8)', #设置点的颜色
)
)
data=[trace0,trace1]
#设置页面布局
layout=dict(title='Styled Scatter',
yaxis=dict(zeroline=True),#显示y轴的0刻度线
xaxis=dict(zeroline=False))#不显示x轴的0刻度线)
#布局数据
fig=dict(data=data,layout=layout)
pyplt(fig,filename='散点图2.html')
结果:
气泡图
基本案例
import plotly as py
import plotly.graph_objs as go
#----pre def
pyplt=py.offline.plot
trace0=go.Scatter(
x=[1,2,3,4],
y=[10,11,12,13],
mode='markers',
marker=dict(size=[40,60,80,100])
)
data=[trace0]
pyplt(data,filename='气泡图基本案例.html')
print('ok')
结果:
样式设置
import plotly as py
import plotly.graph_objs as go
#----pre def
pyplt=py.offline.plot
trace0=go.Scatter(
x=[1,2,3,4],
y=[10,11,12,13],
mode='markers',
text=['A<br>size:40','B<br>size:60','C<br>size:80','D<br>size:100'],#<br>是换行的意思
marker=dict(
color=[120,125,130,135],
opacity=[1,0.8,0.6,0.4],
size=[40,60,80,100],
showscale=True #表示右边显示颜色条的大小
)
)
data=[trace0]
pyplt(data,filename='气泡图样式设置.html')
print('ok')
结果:
缩放设置
import plotly as py
import plotly.graph_objs as go
#----pre def
pyplt=py.offline.plot
trace0=go.Scatter(x=[1,2,3,4],y=[10,11,12,13],
text=['A<br>size:40<br>default','B<br>size:60<br>default','C<br>size:80<br>default','D<br>size:100<br>default'],
mode='markers',
name='default',
marker=dict(size=[400,600,800,1000],sizemode='area')
)
trace1=go.Scatter(x=[1,2,3,4],y=[14,15,16,17],
text=['A<br>size:40<br>sizeref:0.2','B<br>size:60<br>sizeref:0.2','C<br>size:80<br>sizeref:0.2','D<br>size:100<br>sizeref:0.2'],
mode='markers',
name='sizeref:0.2',#变成默认的5倍
marker=dict(size=[400,600,800,1000]