python使用Plotly绘图工具绘制柱状图


Posted in Python onApril 01, 2019

本文实例为大家分享了python使用Plotly绘图工具绘制柱状图的具体代码,供大家参考,具体内容如下

使用Plotly绘制基本的柱状图,需要用到的函数是graph_objs 中 Bar函数

通过参数,可以设置柱状图的样式。

通过barmod进行设置可以绘制出不同类型的柱状图出来。

我们先来实现一个简单的柱状图:

# -*- coding: utf-8 -*-
import plotly as py
import plotly.graph_objs as go
pyplt = py.offline.plot
# Trace
trace_basic = [go.Bar(
 x = ['Variable_1', 'Variable_2', 'Variable_3','Variable_4','Variable_5'],
 y = [1, 2, 3, 2, 4],
 )]
# Layout
layout_basic = go.Layout(
 title = 'The Graph Title',
 xaxis = go.XAxis(range = [-0.5,4.5], domain = [0,1])
 )
# Figure
figure_basic = go.Figure(data = trace_basic, layout = layout_basic)
# Plot
pyplt(figure_basic, filename='tmp/1.html')

python使用Plotly绘图工具绘制柱状图

上面这个例子,就是一个简单的柱状图。

下面我们讲下另外一种图,柱状簇

实现过程则是,在基本的柱状图中,加入多租数据即可实现,柱状簇

import plotly as py
import plotly.graph_objs as go
pyplt = py.offline.plot
# Traces
trace_1 = go.Bar(
 x = ["西南石油", "东方明珠", "海泰发展"],
 y = [4.12, 5.32, 0.60],
 name = "201609"
 )
trace_2 = go.Bar(
 x = ["西南石油", "东方明珠", "海泰发展"],
 y = [3.65, 6.14, 0.58],
 name = "201612"
 )
 
trace_3 = go.Bar(
 x = ["西南石油", "东方明珠", "海泰发展"],
 y = [2.15, 1.35, 0.19],
 name = "201703"
 )
trace = [trace_1, trace_2, trace_3]
# Layout
layout = go.Layout(
 title = '净资产收益率对比图'
 )
# Figure
figure = go.Figure(data = trace, layout = layout)
# Plot
pyplt(figure, filename='tmp/2.html')

python使用Plotly绘图工具绘制柱状图

执行上述代码,我们可以看到如上图所示柱状簇图例

可将数据堆叠生成。

接下来在讲讲如何绘制层叠柱状图

层叠柱状图的绘制方法与柱状簇的绘制方法基本差不多

也就是对同一个柱状簇进行叠加,实现方法是对Layout中的barmode属性进行设置

barmode = 'stack'

其余参数,与柱状簇相同。

# -*- coding: utf-8 -*-
import plotly as py
import plotly.graph_objs as go
pyplt = py.offline.plot
 
# Stacked Bar Chart
trace_1 = go.Bar(
 x = ['深证50', '上证50', '西南50', '西北50','华中50'],
 y = [0.7252, 0.9912, 0.5347, 0.4436, 0.9911],
 name = '股票投资'
)
 
trace_2 = go.Bar(
 x = ['深证50', '上证50', '西南50', '西北50','华中50'],
 y = [0.2072, 0, 0.4081, 0.4955, 0.02],
 name='其它投资'
)
 
trace_3 = go.Bar(
 x = ['深证50', '上证50', '西南50', '西北50','华中50'],
 y = [0, 0, 0.037, 0, 0],
 name='债券投资'
)
 
trace_4 = go.Bar(
 x = ['深证50', '上证50', '西南50', '西北50','华中50'],
 y = [0.0676, 0.0087, 0.0202, 0.0609, 0.0087],
 name='银行存款'
)
 
trace = [trace_1, trace_2, trace_3, trace_4]
layout = go.Layout(
 title = '基金资产配置比例图',
 barmode='stack'
)
 
fig = go.Figure(data = trace, layout = layout)
pyplt(fig, filename='tmp/1.html')

python使用Plotly绘图工具绘制柱状图

瀑布式柱状图

瀑布式柱状图是层叠柱状图的另外一种表现

可以选择性地显示层叠部分来实现柱状图的悬浮效果。

# -*- coding: utf-8 -*-
import plotly as py
import plotly.graph_objs as go
pyplt = py.offline.plot
 
x_data = ['资产1', '资产2',
  '资产3','资产4', '总资产']
y_data = [56000000, 65000000, 65000000, 81000000, 81000000]
text = ['666,999,888万元', '8,899,666万元', '88,899,666万元', '16,167,657万元', '888,888,888万元']
 
# Base
trace0 = go.Bar(
 x=x_data,
 y=[0, 57999848, 0, 66899764, 0],
 marker=dict(
 color='rgba(1,1,1, 0.0)',
 )
)
# Trace
trace1 = go.Bar(
 x=x_data,
 y=[57999848, 8899916, 66899764,16167657, 83067421],
 marker=dict(
 color='rgba(55, 128, 191, 0.7)',
 line=dict(
  color='rgba(55, 128, 191, 1.0)',
  width=2,
 )
 )
)
 
data = [trace0, trace1]
layout = go.Layout(
 title = '测试图例',
 barmode='stack',
 showlegend=False
)
 
annotations = []
 
for i in range(0, 5):
 annotations.append(dict(x=x_data[i], y=y_data[i], text=text[i],
     font=dict(family='Arial', size=14,
     color='rgba(245, 246, 249, 1)'),
     showarrow=False,))
 layout['annotations'] = annotations
 
fig = go.Figure(data=data, layout=layout)
pyplt(fig, filename = 'tmp/1.html')

python使用Plotly绘图工具绘制柱状图

运行上述代码,可以得到如上图所示的瀑布式柱状图。

下面我们说说,图形样式的设置。

对于柱状图颜色与样式的设置可以通过设置下面这个案例来说明。

import plotly as py
import plotly.graph_objs as go
pyplt = py.offline.plot
 
# Customizing Individual Bar Colors
volume = [0.49,0.71,1.43,1.4,0.93]
width = [each*3/sum(volume) for each in volume]
trace0 = go.Bar(
 x = ['AU.SHF', 'AG.SHF', 'SN.SHF',
 'PB.SHF', 'CU.SHF'],
 y = [0.85, 0.13, -0.93, 0.46, 0.06],
 width = width,
 marker = dict(
 color=['rgb(205,38,38)', 'rgb(205,38,38)',
  'rgb(34,139,34)', 'rgb(205,38,38)',
  'rgb(205,38,38)'],
 line=dict(
  color='rgb(0,0,0)',
  width=1.5,
 )),
 opacity = 0.8,
)
 
data = [trace0]
layout = go.Layout(
 title = '有色金属板块主力合约日内最高涨幅与波动率图',
 xaxis=dict(tickangle=-45),
)
 
fig = go.Figure(data=data, layout=layout)
pyplt(fig, filename='tmp/4.html')

python使用Plotly绘图工具绘制柱状图

运行上述代码,可以看到上图所示图例

柱状图展示了5种金属,在某个交易日的最高涨幅与波动率情况,柱形图宽度表示相对波动率的高低。

柱形图越宽,波动率越大,高度表示涨幅,红色表示上涨,绿色表示下跌。

用line设置柱状图外部线框,用width设置柱状图的宽度,用opacity设置柱状图颜色的透明度情况。

基本的柱状图情况,就讲到这里。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
Jul 02 Python
Python中一些不为人知的基础技巧总结
May 19 Python
Python实现的txt文件去重功能示例
Jul 07 Python
Python简易版停车管理系统
Aug 12 Python
Django在Model保存前记录日志实例
May 14 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
Python切片列表字符串如何实现切换
Aug 06 Python
python的setattr函数实例用法
Dec 16 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 #Python
Python进阶之@property动态属性的实现
Apr 01 #Python
彻底理解Python中的yield关键字
Apr 01 #Python
python抓取搜狗微信公众号文章
Apr 01 #Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 #Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 #Python
Python批量删除只保留最近几天table的代码实例
Apr 01 #Python
You might like
用PHP实现小型站点广告管理(修正版)
2006/10/09 PHP
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
php文档更新介绍
2011/07/22 PHP
php笔记之:AOP的应用
2013/04/24 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
jQuery 性能优化手册 推荐
2010/02/23 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
原生js实现购物车功能
2020/09/23 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
python实现网页录音效果
2020/10/26 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
留学自荐信
2013/10/10 职场文书
元旦促销方案
2014/03/15 职场文书
男女朋友协议书
2014/04/23 职场文书
无房证明范本
2014/09/17 职场文书
地方课程教学计划
2015/01/19 职场文书
团代会闭幕词
2015/01/28 职场文书
python使用torch随机初始化参数
2022/03/22 Python