碎语
- 学习的正态曲线:入门容易,精通难
- 积累的正态曲线:先越读越多,后越读越少
Plotly画图三步走
- 离线前置准备
import plotly ## 导入包
import plotly.graph_objs as go ## graph_objs是plotly下的子模块,用于导入plotly中所有的图形对象。导入图形对象之后便可以根据需要呈现的数据和自定义的图形参数来定义一个grapg对象,再导入plotly.offline.iplot()中进行最终的呈现
import plotly.offline as offline ## 进入离线模式
offline.inti_notebook.mode() ## 在Jupyter Notebook中显示,如果只想生成一个HTML的链接这步可以省略
- 可视化组成的部分
图像最终的展现由:数据部分(trace)、背景(布局:layout)部分两部分组成。Plotly分开定义这两部分,然后使用go.Figure组装这两部分,最后使用plotly.offline.iplot(fig)画图:
第一步:定义Trace
根据数据选择你需要的图表,构造一个Trace,以散点图为例:
Trace = go.Scatter(
x = df.index,#X轴的值,这里取得的是DF的索引,工作中使用的多
y = df['aa'],#y轴的值,这里取得的是DF的某一列。
mode = 'markers+lines',#散点的类型,这种事点和线的连接
market = dict(),#字典,点的设置,大小等等
name = '',#图例名称
text = df['aa'],#设置数据标签的值,散点此处的数据标签不会显示,是鼠标放在上面会有显示,所以要想使用显性的数据标签,则需要使用注释
textposition = 'right',#数据标签的位置
textfont = dict(size = 100,color = 'black')#数据标签的大小等属性,其属性都放在字典中
)
data = [Trace] ##把图像放在list中
由于参数太多提供了部分通用的参数,具体个图形的参数,有多不同,我会在后面每一个图形中细聊。
第二步:定义Layout
此步主要是定义布局相关的参数,主要有文字、标题、大小、背景、坐标轴、图例
layout = go.Layout(
font = dirt(family = 'arial',size = 16 ,color = ''),#用在此处是控制全局的字体字典类型
title = 'aa',#标题,图像的主标题
titlefont = dict(family= '',size = '',color = ''),#此处独立控制主标题的字体
autosize = False,#bool,图像的大小是否自动
width = 34 ,# int,图像的宽度
height = 50,# int ,图像的高度
plot_bgcolor = '',str,背景颜色
xaxis = dict(
title = 'aa',#坐标轴标题
titlefont = dict(),#参数与之前一样
type = 'category',#str型,用于控制横坐标轴类型,'-'表示根据输入数据自适应调整,'linear'表示线性坐标轴,'log'表示对数坐标轴,'date'表示日期型坐标轴,'category'表示分类型坐标轴,默认为'-'
autorange = bool,#bool型或'reversed',控制是否根据横坐标对应的数据自动调整坐标轴范围,默认为True
range = [起点,终点],#list型,控制横坐标轴的区间范围,自行设置无默认项,取决于横坐标轴的数据类型,格式均为[左端点,右端点]
tickmode = 'auto',#str型,设置坐标轴刻度的格式,'auto'表示自动根据输入的数据来决定,'linear'表示线性的数值型,'array'表示由自定义的数组来表示(用数组来自定义刻度标签时必须选择此项)
tickvals=[],#list、numpy array或pandas中的series,作为坐标轴刻度标签的替代(tickmode此时必须被设置为'array')
ticks = '',str型,控制刻度标签的书写位置,'outside'表示在外侧显示,'inside'表示在内侧显示,''表示不显示
tickfont = dirt(),字典型,同前面所有字典型字体控制参数,用于对刻度标签进行单独控制
tickangle = 12,#int型,设置刻度标签的旋转角度
showgrid = Ture,#bool型,控制是否绘制出该坐标轴上的直线部分
), #如果要设置第二坐标则使用xaxis2 = dict()
showlegend = True,#bool型,控制是否有图例
legend = dict(
x = 1,#int,图例位置的x值
y = 2,#int,图例位置的y值
font = dict(),#字典型,与前面一样
orientation = '',str,设置图例各元素的堆叠方向,'v'表示竖直,'h'表示水平堆叠
)
)
annotations:给图表加上注释
- 主要是给数据加上标签,trace中的txet是也是给数据加上标签,但是这个标签只有你鼠标放在相应的点上才会有,不会像Excel中显性的显示。
- 一般注释都要放在列表中,每一个注释都是有一个字典组成,所以要注释多个点时,最好写循环,然后使用layout['annotations'] = annotations,添加到layout中
annotations = [dict(x = 12,#数值,注释位置x值
y = 13,#数值,注释位置y值
text = '',str,注释的值
font = dict(),#与前面一样
showarrow = False,#bool,注释的箭头是否显示
)]
第三步:fig:整合图和图层
fig = go.Figure(data = data ,layout = layout)
plotly.offline.ipolt(
fig,#fig或者是data
show_link = True,#bool,是否显示链接,图右下角
link_text = '',#str,链接的名字
filename = '',#str,文件夹的名字
image = '',#str,图片的类型'None'|'png' |'jpeg' |'svg' |'webp'
image_height = 32,#数值,图片的高度
image_width = 22 ,#数值,图片的宽度
)
结束语
如果我不能让您看懂,那是我的问题,如果有疑问可以关注我,然后私聊我,我会尽最大的努力帮助你