使用Plotly绘制基本柱状图最重要的函数是graph_objs中的Bar函数,通过传递数据,可以设置柱状图的样式。在Layout中对barmode进行设置可以绘制出不同类型的柱状图。如图2-15所示是柱状图最简单的实现,见文件2.6_BarChart_1.py,该案例包括使用Bar函数传递数据和变量,以及在Layout中设置标题、 x 轴范围。
图2-15 基本柱状图
除基本柱状图外,还有柱状簇,在基本柱状图代码的基础上加入多组数据即可实现柱状簇。图2-16所示为国际贸易板块中广东明珠、五矿发展与上海物贸这3只股票从2016年第三季度到2017年第一季度的净资产收益率(%)变化,数据来源是同花顺。
本案例见文件 2.6_BarChart_2.py。从纵向看,上海物贸三个季度的数据分别为4.12、3.65和2.15;从横向看,data1中的数据y = [4.12, 5.32, 0.60]是3只不同股票对应的资产收益率,通过这种配置数据的方式可以对柱状簇图进行实现。本案例通过柱状簇图对比了2016年第三季度、2016年第四季度与2017年第一季度3个不同时间段同一只国际贸易板块股票的资产收益率,而且对同一时间段不同股票的资产收益率的差异也进行了展示。
图2-16 国际贸易板块净资产收益率的对比
本案例的代码如下。
层叠柱状图的绘制与柱状簇图的绘制大同小异,相当于对同一簇的柱状图进行叠加,实现的方式是对Layout中的barmode属性进行设置,即设置barmode='stack',其余参数与柱状簇图相同。图2-17所示的层叠柱状图展示了华夏新经济混合、华夏上证50、嘉实新机遇混合、南方消费活力混合和华泰柏瑞这5只基金的资产配置比例,数据来源是和讯网。
该案例见文件2.6_BarChart_3.py,通过设置barmode属性实现柱状图的层叠。通过层叠柱状图可以很清楚地看出不同基金的资产配置情况,如华夏新经济混合、华夏上证50、华泰柏瑞这3只基金有很大的股票投资权重。通过观察同一只基金的资产配置比例,可以对其风险属性有更具体的了解。
图2-17 基金资产配置比例图
该案例的代码如下。
瀑布式柱状图是层叠柱状图的一种衍生,通过选择性地显示层叠部分来实现柱状图的悬浮效果。如图2-18所示的瀑布式柱状图展示了万科A股票在2016年的资产负债结构,其中非流动负债与所有者权益柱状图的悬浮效果通过设置trace0中的 y 值实现,如 y =[0, 57999848, 0, 66899764, 0],表示第1、3、5根柱状图从0开始显示,第2根柱状图从57999848开始显示,第4根柱状图从66899764开始显示,实现的方式是将trace1所表示的柱形颜色设置为白色,即color='#FFFFFF',起到选择性显示的效果,见文件2.6_BarChart_4.py。
图2-18 万科A股票资产负债结构
该案例的代码如下。
对柱状图颜色与样式的设置通过下面这个案例来说明。图2-19所示的柱状图展示了有色金属板块AU、AG、SN、PB和CU这5种合约在某一个交易日的最高涨幅与波动率,柱形的宽度表示相对波动率的高低,柱形越宽,波动率越大;高度表示涨幅,红色柱状图突出了涨幅上升的商品期货,绿色柱状图突出了涨幅下跌的商品期货。
本案例见文件2.6_BarChart_5.py,包括设置柱状图的颜色样式、用line设置柱状图外围的框线、用width设置柱状图的宽度、用opacity设置柱状图颜色的透明度,以及设置Layout中的xaxis令 x 轴的标记旋转-45°。
图2-19 有色金属板块主力合约日内最高涨幅与波动率图
本案例的代码如下。
经过对前面案例的学习,读者对柱状图的绘制已经很清楚了,在实际运用时,往往需要从dataframe中获取高频金融数据进行可视化,下面的案例讲解从导入CSV文件到做出成交量柱状图的过程,更加贴近现实中的应用,运行结果如图2-20所示,见文件2.6_BarChart_6.py。
图2-20 成交量柱状图
本案例的代码如下。
本小节对绘制柱状图所需 Bar函数的常用参数进行详细讲解,包括设置柱状图所需的数据和属性,常用参数如下。
● base:柱状图的起始参数。
● dx、dy: x 、 y 坐标轴的步进值,默认值是1。
● error_x、error_y: x 、 y 出错信息。
● hoverinfo:当用户与图形互动时,鼠标指针显示的参数,包括 x 、 y 、 z 坐标数据,以及text(文字信息)和name(图形名称)数据等参数的组合,使用+、all、none和skip(忽略)作为组合连接符号,默认是all(全部显示)。
● insidetextfont:内置文本的字体格式参数。
● legendgroup:图标参数,默认是空字符串。
● marker:数据节点参数,包括大小、颜色、格式等。
● name:名称参数。
● offset:坐标位移参数。
● opacity:透明度参数,范围是0~1。
● orientation:图形显示方向参数,包括v(垂直模式)和h(水平模式)。
● outsidetextfont:外置文本的字体参数。
● rsrc、xsrc、ysrc、textsrc、textpositionsrc、offsetsrc、basesrc、widthsrc:字符串源数组列表,作为Plotly网格标识符,用于设置一些特殊图表所需的r参数、x参数、y参数、text(文本)参数、textposition(文本位置)参数、offset(位移)参数、base(起点)参数、width(宽度)参数。
● r、t:仅用于极坐标图,r用于设置径向坐标(半径),t用于设置角坐标。
● showlegend:布尔变量,用于切换图标显示。
● stream:数据流,用于实时同步数据图表。
● textfont:文本字体参数,包括字体名称、颜色、大小等。
● textposition:“文本”元素的位置参数,包括top left(左上)、top center(中上)、top right(右上)、middle left(左中)、middle center(中心)、middle right(右中)、bottom left(左下)、bottom center(中下)、bottom right(右下)模式。默认是middle center(中心)模式。
● text:文本数据,设置与每个“(x,y)对”关联的文本元素,数组列表格式,默认是空字符串。
● type:数据显示模式参数,包括constant(常数)、percent(百分比)、sqrt(平方根)和array(数组)。
● visible:布尔变量,切换图形显示开关。
● width:柱状图的条形宽度。
● x0、y0:坐标轴起点坐标。
● xaxis、yaxis: x 、 y 坐标参数。
● xcalendar、ycalendar:坐标时间参数格式,默认是公历(gregorian)。
● x、y: x、y 轴的坐标数据。