pythonPlotly

可视化神器Plotly(5)---参数详解

2019-08-10  本文已影响0人  惑也

本文主要针对plotly的参数含义进行说明,随着plotly版本的迭代更新,部分参数的用法会有细微变化,具体参加官方文档

一、图表预览

二、图表类型

三、线形图和散点图

(一)、说明

  1. 线形图又称为曲线图,是最常用的图形类型。与传统的绘图软件不同,Plotly没有独立的线形图函数,而是把线形图与散点图全部用Scatter函数实现;

  2. 填充线形图是线形图的一种衍生,除了显示本身的线条值,每个数据点还显示该节点的最大值和最小值,并对中间的范围进行颜色填充。绘制过程分两步:一部分是对三条可见线条进行绘制;另一部分是对三条填充线条进行绘制;

  3. 面积图也是线形图的一种衍生,使用Scatter函数进行绘制,不同之处在于面积图对于 fill 属性的设置,相当于在线形图的基础上对曲线与坐标轴之间的区域进行填充;

  4. 基本面积图的填充每条曲线不同,内部填充面积图,仅填充两条曲线交叉所形成的面积部分,同样通过设置 fill 属性来完成,只需在基本面积图的基础上,设置第一条曲线无填充效果,即 fill=None,再设置第二条曲线的填充效果为 fill= 'tonexty'

  5. 堆积面积图层叠柱状图类似,都展示了数据累加的效果,不同之处在于对数据的设置:堆积面积图需要的是累加数据,而层叠柱状图只需要每部分的真实数据即可。因此,在绘制层叠柱状图时需要设置stack模式,而绘制堆积面积图则不需要设置。本质上,堆积面积图的堆积效果是在同一个图形中绘制多个面积图来实现;

  6. Plotly没有独立的气泡图函数,实现方法与散点图的实现方法类似,修改散点图中的点的大小,就变成了气泡图;

  7. 特别说明: Plotly绘图函数,无论是哪种类型的图表,绝大部分参数的用法和含义基本一致,本文着重介绍一下线性图和散点图的常用参数,其它图表主要补充独有的参数或常用参数,相同的参数不再重复介绍;

(三)、data参数

  1. tozeroxtozeroy 分别表示填充曲线到x=0和y=0的区域;
  2. tonextxtonexty 分别表示填充曲线到x和y方向上的前一条曲线之间的区域,如果前面没有曲线,则效果同tozeroxtozeroy
  3. toself 表示将曲线的各端点连接成闭合的形状;
  4. tonext 表示将2条曲线各端点均连接成闭合的形状,前提是一条曲线包围另一条曲线;
  1. color:元组,元素为字符串颜色序列,设置对应图表节点的颜色;
  2. width:数值,设置线条宽度;
  3. dash:线条格式,包括:dash(虚短线)、dot(虚点)、dashdot(短线和点);
  4. shape:进行数据点的插值设置,即根据已有的零散数据点,找到一条满足一定条件的曲线,使之经过全部的数据点。共有6种插值方式:'linear'、'spline'、'hv'、'vh'、'hvh'和'vhv。
  1. size:列表,元素为相应节点的尺寸大小;
  2. sizeref:缩放的比例,如设置为2,则缩小为原来的1/2;
  3. sizemode:缩放的标准,默认以diameter(直径)缩放,也可选择以area(面积)缩放;

(三)、layout参数

  1. text:字符串,标题内容;
  2. font:设置标题字体。包含:字体、颜色、大小等;
  3. x、y:取值0~1之间,设置在标准化坐标中位置,0.5为居中;
  4. xanchor:设置标题相对于x位置的水平对齐方式,有如下取值:"auto" | "left" | "center" | "right" ;
  5. yanchor:设置标题相对于y位置的垂直对齐方式,有如下取值:"auto" | "top" | "middle" | "bottom" ;
    6.pad:设置标题的填充。
  1. x、y:数值,表示图例在坐标内的位置;
  2. bordercolor:设置图例外边框颜色;
  3. borderwidth:设置图例外边框的线条宽度;
  1. title:设置坐标轴的标题,包括标题内容、字体、颜色、大小等;
  2. tickformat:设置刻度线标签格式,如:',' 可以显示千分位标示;'YYYY-MM-DD'可以将日期格式化为类似 2019-01-01
  3. ticksuffix:设置刻度标签后缀字符串;
  4. tickprefix:设置刻度标签前缀字符串;
  5. type:设置轴类型。默认情况下('-'),通过查看引用相关轴的迹线数据,尝试确定轴类型,有如下取值:"-" | "linear" | "log" | "date" | "category" | "multicategory"
  6. showline:布尔值,确定是否显示坐标轴直线;
  7. zeroline : 布尔值,确定是否在该轴的0值处绘制垂直的直线;
  8. linecolor:坐标轴线的颜色;
  9. linewidth:坐标轴线的宽度;
  10. range:列表,设置坐标轴的取值范围;
  11. overlaying:设置相同的坐标轴id(双坐标);
  12. rangemode:根据输入数据的极值计算范围。默认为"normal",取值为“tozero”`,则范围扩展为0,无论输入数据是否为“非负”,无论输入数据如何,范围都是非负的。目前笔者用到过的场景:双Y坐标轴时,实现Y轴的0刻度线对齐;
  13. side:设置坐标轴在绘图区域的位置,共4个取值:top、bottom(默认)、left、right;
  14. autotick:布尔变量,是否删除部分日期,False为保持原状;
  15. ticks:是否绘制刻度线,包括:outside(外部)、inside(内部),默认为空(' '),不显示刻度线;
  16. ticklen:设置刻度线长度,默认为5;
  17. tickwidth:设置刻度线宽度,默认为1;
  18. tickcolor:设置刻度线颜色,默认值:"#444" ;
  19. tickfont:设置刻度线标签字体,包括字体、颜色、大小;
  20. nticks:设置坐标轴的最大刻度个数;
  21. showticklabels:布尔变量,默认为True,确定是否绘制刻度标签;
  22. showgrid:布尔值,确定是否绘制网格线。如果为“True”,则在每个刻度线处绘制网格线;
  23. gridcolor:设置网格线的颜色;
  24. gridwidth:设置网格线的宽度;
  25. rangeslider:设置滑动条,有如下设置项:
    1)bgcolor:设置滑动条的背景颜色,默认值:"#fff" ;
    2)bordercolor:设置滑动条的边框颜色,默认值:"#444" ;
    3)borderwidth:设置滑动条的边框宽度,默认无;
    4)autorange:布尔值,设置是否根据输入数据计算滑动条的范围。如果提供range,则autorange设置为“False”;
    5)range:列表,设置滑动条的范围。如果未设置,则默认为完整的x轴范围。如果轴type是“log”,则必须设置范围;如果轴type是“date”,则它应该是日期字符串或日期数据,Plotly对时间序列的支持比较友好,既支持字符串格式,又支持日期/时间格式;如果轴“type”是“ category”,它应该是数字或比例,其中每个类别按其出现的顺序从零开始分配序列号;
    6)thickness:设置滑动条的高度,作为总绘图区域高度的一部分,默认值:0.15 ;
    7)visible:布尔值,默认为True,设置滑动条是否可见;
    8)y:设置滑动条的轴范围是否与主图中的值相同;
  26. rangeslider:设置范围选择按钮,有如下设置项:
    1)visible:设置范围选择按钮是否可见。特别说明:范围选择按钮仅适用于数据为date或设置“type”为“date”的x轴;
    2)buttons:设置按钮,有如下设置项:
    a、 visible:布尔值,设置此按钮是否可见,默认为True;
    b、 step:设置按钮的时间单位,默认为"month" ,包括如下取值:"month" | "year" | "day" | "hour" | "minute" | "second" | "all" ;
    c、 count:数值,默认为1,用于设置按钮时间单位的数量,与step一起使用,指定该按钮的时间筛选范围;
    d、 stepmode:设置时间范围的更新模式,默认为"backward",按则开始位置为“计数”乘以“步”,若设置为"todate" ,则开始位置返回当年的开始日期;
    e、 label:设置按钮上显示的文本内容;
    3)x、y:取值0~1之间,设置在标准化坐标中位置,0.5为居中;
    4)xanchor:设置标题相对于x位置的水平对齐方式,有如下取值:"auto" | "left" | "center" | "right" ;
    5)yanchor:设置标题相对于y位置的垂直对齐方式,有如下取值:"auto" | "top" | "middle" | "bottom" ;
    6)font:设置标题字体。包含:字体、颜色、大小等;
    7)bgcolor:设置范围选择按钮的背景颜色,默认值:"#eee" ;
    8)bordercolor:设置范围选择按钮的边框颜色,默认值:"#444" ;
    9)borderwidth:设置范围选择按钮的边框宽度,默认无;

三、柱状图和水平条形图

(一)、说明

  1. Plotly绘制基本柱状图的重要函数是graph_objs中的Bar函数,通过传递数据,可以设置柱状图的样式;

  2. 除基本柱状图外,还有柱状簇,在基本柱状图的基础上加入多组数据即可实现柱状簇;

  3. 层叠柱状图的绘制与柱状簇图的绘制大同小异,相当于对同一簇的柱状图进行叠加,实现的方式是对Layout中的barmode属性,设置barmode='stack',其余参数与柱状簇图相同;

  4. 瀑布式柱状图是层叠柱状图的一种衍生,通过选择性地显示层叠部分来实现柱状图的悬浮效果;

  5. 绘制水平条形图与绘制柱状图唯一的区别:在 Bar 函数中设置orientation='h',其余参数与柱状图相同,也可以通过设置barmode = 'stack'绘制层叠水平条形图与瀑布式水平条形图;

(二)、data参数

(三)、layout参数

  1. domain:2个0~1之间的元素组成的列表,设置图表占画布的坐标轴范围;
  2. dtick:设置坐标轴刻度的间隔区间;
  1. xref、yref:设置文本样式;
  2. x、y:设置文本位置;
  3. text:设置文本内容;
  4. font:设置文本的格式,包括字体、大小、颜色等;
  5. showarrow:布尔值,是否添加从标签到数据点的箭头;

四、直方图

(一)、说明

(二)、data参数

  1. 为空("")时表示:纵坐标显示落入区间的样本数目,所有矩形的高相加为总样本数量;
  2. percent 时表示:纵坐标显示落入区间的样本占总体样本的百分比,所有矩形的高相加为100%;
  3. probability时表示:纵坐标显示落入区间的样本频率;
  4. density 时表示:每个小矩形的面积为落入区间的样本数量,所有面积值相加为样本总数;
  5. probability density时表示:每个小矩形的面积为落入区间的样本占总体的比例,所有面积值相加为1;
  1. enabled:布尔型,设置为True会显示累积直方图,设置为False则不对频率或频数进行累积;
  2. direction用于设置累积方向,确定频率是从1~0(降序),还是从0~1(升序);
  3. currentbin有三个选项,即include、exclude、half,为了防止偏差,一般选择half;

五、饼图

(一)、说明

  1. 使用graph_objs中的 Pie() 函数绘制饼图。其中,最常用的两个属性:values 设置可视化的数据、labels 设置不同数据对应的标签;

  2. 绘制环形饼图,只需在 Pie() 函数中,通过属性 hole 设置控制环形中心的空白大小即可实现;

(二)、data参数

六、表格

(一)、说明

  1. Plotly支持绘制表格图表,而且绘图效果非常美观;
  2. 在Plotly中,有2种方式可以绘制表格:Table()函数create_table()函数

(二)、Table()函数

  1. header:表格的表头,包括如下设置项:
  1. cells:表格内容的单元格值,设置项与 header的参数基本一致;

(三)、create_table()函数

  1. table_text:表格数据,通常是一个DataFrame格式数据;
  2. index:布尔型,默认False,设置是否显示索引列;
  3. index_title:字符串,默认为空,当index=True时,设置索引列的列名;
  4. colorscale:列表,设置背景填充颜色,默认为[[0, '#66b2ff'], [.5, '#d9d9d9'], [1, '#ffffff']]。第一个元素为0的子列表,用于设置第一行(表头)和有索引时的第一列的背景填充颜色;第一个元素为0.5的子列表,用于设置表格内容中数行的背景填充颜色;第一个元素为1的子列表,用于设置表格内容中数行的背景填充颜色;
  5. font_colors:单个或多个元素组成的列表,设置字体颜色,默认为['#000000']。三个元素时,分别设置表头、奇数行、偶数行的字体颜色;也可以为每行设置不同的字体颜色;

七、多子图

(一)、说明

  1. 绘制多子图时,有2种方法,推荐使用subplots.make_subplots()方法,通过遍历数据的列名,实现将指定的列数据设置为指定位置的子图表;

  2. 特别地,当绘制多个子饼图时,不支持上述方法,可以在go.Pie()中设置参数domain,为不同的饼图指定相应的位置。当然,其它类型的图表在绘制多子图时也可以使用该方法;

(二)、subplots.make_subplots()

  1. rows:设置图表的子图表行数;

  2. cols:设置图表的子图表列数;

  3. print_grid:是否打印子图表的坐标;

  4. subplot_titles:设置各个子图表的标题;

  5. shared_xaxes:子图表是否共享同一个横坐标轴
    True或'columns':表示在同一列中的子图之间共享轴;
    'rows':表示在同一行的子图中共享轴;
    'all':表示在网格中的所有子图上共享轴;

  6. shared_yaxes:子图表是否共享同一个纵坐标轴
    'columns':表示在同一列的子图中共享轴;
    True或'rows':表示在同一行的子图中共享轴;
    'all':表示在网格中的所有子图上共享轴;

  7. specs:分配子图的区间,比较常用的参数;

  8. column_width或column_widths:0~1之间数字组成的列表,设置各个子图的宽度;

  9. row_height或row_heights:0~1之间数字组成的列表,设置各个子图的高度;

八、Plotly对象概览

(一)、2D平面绘图对象

(二)、3D平面绘图对象

(三)、Maps地图

(四)、WebGL格式图形

(五)、图表辅助工具

(六)、Layout布局函数

(七)、Annotation注释函数

(八)、Axis坐标轴参数

上一篇 下一篇

猜你喜欢

热点阅读