转载:http://www.jb51.net/article/118936.htm

本篇文章主要介绍了Python使用plotly绘制数据图表的方法,实例分析了plotly绘制的技巧。

导语:使用 python-plotly 模块来进行压测数据的绘制,并且生成静态 html 页面结果展示。

不少小伙伴在开发过程中都有对模块进行压测的经历,压测结束后大家往往喜欢使用Excel处理压测数据并绘制数据可视化视图,但这样不能很方便的使用web页面进行数据展示。本文将介绍使用python-plotly模块来进行压测数据的绘制,并且生成静态html页面方便结果展示。

Plotly绘图实例:

1、line-plots

绘图效果:

生成的html页面在右上角提供了丰富的交互工具。

代码:

  1. import plotly.plotly
  2. import plotly.graph_objs as pg
  3.  
  4. def line_plots(output_path):
  5. """
  6. 绘制普通线图
  7. """
  8. # 数据,x为横坐标,y,z为纵坐标的两项指标,三个array长度相同
  9. dataset = {'x': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
  10. 'y': [5, 4, 1,3, 11, 2, 6, 7, 19, 20],
  11. 'z': [12, 9, 0, 0, 3, 25, 8, 17, 22, 5]}
  12.  
  13. data_g = []
  14. # 分别插入 y, z
  15. tr_x = pg.Scatter(
  16. x=dataset['x'],
  17. y=dataset['y'],
  18. name='y'
  19. )
  20. data_g.append(tr_x)
  21. tr_z = pg.Scatter(
  22. x=dataset['x'],
  23. y=dataset['z'],
  24. name='z'
  25. )
  26. data_g.append(tr_z)
  27.  
  28. # 设置layout,指定图表title,x轴和y轴名称
  29. layout = pg.Layout(title="line plots", xaxis={'title': 'x'}, yaxis={'title': 'value'})
  30. # 将layout设置到图表
  31. fig = pg.Figure(data=data_g, layout=layout)
  32. # 绘图,输出路径为output_path参数指定
  33. plotly.offline.plot(fig, filename=output_path)
  34.  
  35. if __name__ == '__main__':
  36. line_plots(output_path)

2、scatter-plots

绘图效果:

  1. import plotly.plotly
  2. import plotly.graph_objs as pg
  3.  
  4. def scatter_plots(output_path):
  5. '''
  6. 绘制散点图
  7. '''
  8. dataset = {'x':[0,1,2,3,4,5,6,7,8,9],
  9. 'y':[5,4,1,3,11,2,6,7,19,20],
  10. 'text':['5_txt','4_txt','1_txt','3_txt','11_txt','2_txt','6_txt','7_txt','19_txt','20_txt']}
  11.  
  12. data_g = []
  13.  
  14. tr_x = pg.Scatter(
  15. x = dataset['x'],
  16. y = dataset['y'],
  17. text = dataset['text'],
  18. textposition='top center',
  19. mode='markers+text',
  20. name = 'y'
  21. )
  22. data_g.append(tr_x)
  23.  
  24. layout = pg.Layout(title="scatter plots", xaxis={'title':'x'}, yaxis={'title':'value'})
  25. fig = pg.Figure(data=data_g, layout=layout)
  26. plotly.offline.plot(fig, filename=output_path)
  27.  
  28. if __name__ == '__main__':
  29. scatter_plots("C:/Users/fuqia/Desktop/scatter.html")

3、bar-charts

绘图效果:

代码:

  1. import plotly.plotly
  2. import plotly.graph_objs as pg
  3.  
  4. def bar_charts(name):
  5. '''
  6. 绘制柱状图
  7. '''
  8. dataset = {'x':['Windows', 'Linux', 'Unix', 'MacOS'],
  9. 'y1':[45, 26, 37, 13],
  10. 'y2':[19, 27, 33, 21]}
  11. data_g = []
  12. tr_y1 = pg.Bar(
  13. x = dataset['x'],
  14. y = dataset['y1'],
  15. name = 'v1'
  16. )
  17. data_g.append(tr_y1)
  18.  
  19. tr_y2 = pg.Bar(
  20. x = dataset['x'],
  21. y = dataset['y2'],
  22. name = 'v2'
  23. )
  24. data_g.append(tr_y2)
  25. layout = pg.Layout(title="bar charts", xaxis={'title':'x'}, yaxis={'title':'value'})
  26. fig = pg.Figure(data=data_g, layout=layout)
  27. plotly.offline.plot(fig, filename=name)
  28.  
  29. if __name__ == '__main__':
  30. bar_charts("C:/Users/fuqia/Desktop/bar.html")

4、pie-charts

绘图效果:

代码:

  1. import plotly.plotly
  2. import plotly.graph_objs as pg
  3.  
  4. def pie_charts(name):
  5. '''
  6. 绘制饼图
  7. '''
  8. dataset = {'labels': ['Windows', 'Linux', 'Unix', 'MacOS', 'Android', 'iOS'],
  9. 'values': [280, 25, 10, 100, 250, 270]}
  10. data_g = []
  11. tr_p = pg.Pie(
  12. labels = dataset['labels'],
  13. values = dataset['values']
  14. )
  15. data_g.append(tr_p)
  16. layout = pg.Layout(title="pie charts")
  17. fig = pg.Figure(data=data_g, layout=layout)
  18. plotly.offline.plot(fig, filename=name)
  19.  
  20. if __name__ == '__main__':
  21. pie_charts("C:/Users/fuqia/Desktop/bar.html")

5、filled-area-plots

本例是绘制具有填充效果的堆叠线图,适合分析具有堆叠百分比属性的数据

绘图效果:

代码:

  1. import plotly.plotly
  2. import plotly.graph_objs as pg
  3.  
  4. def filled_area_plots(name):
  5. '''
  6. 绘制堆叠填充的线图
  7. '''
  8. dataset = {'x':[0,1,2,3,4,5,6,7,8,9],
  9. 'y1':[5,4,1,3,11,2,6,7,19,20],
  10. 'y2':[12,9,0,0,3,25,8,17,22,5],
  11. 'y3':[13,22,46,1,15,4,18,11,17,20]}
  12.  
  13. #计算y1,y2,y3的堆叠占比
  14. dataset['y1_stack'] = dataset['y1']
  15. dataset['y2_stack'] = [y1+y2 for y1, y2 in zip(dataset['y1'], dataset['y2'])]
  16. dataset['y3_stack'] = [y1+y2+y3 for y1, y2, y3 in zip(dataset['y1'], dataset['y2'], dataset['y3'])]
  17.  
  18. dataset['y1_text'] = ['%s(%s%%)'%(y1, y1*100/y3_s) for y1, y3_s in zip(dataset['y1'], dataset['y3_stack'])]
  19. dataset['y2_text'] = ['%s(%s%%)'%(y2, y2*100/y3_s) for y2, y3_s in zip(dataset['y2'], dataset['y3_stack'])]
  20. dataset['y3_text'] = ['%s(%s%%)'%(y3, y3*100/y3_s) for y3, y3_s in zip(dataset['y3'], dataset['y3_stack'])]
  21.  
  22. data_g = []
  23. tr_1 = pg.Scatter(
  24. x = dataset['x'],
  25. y = dataset['y1_stack'],
  26. text = dataset['y1_text'],
  27. hoverinfo = 'x+text',
  28. mode = 'lines',
  29. name = 'y1',
  30. fill = 'tozeroy' #填充方式: 到x轴
  31. )
  32. data_g.append(tr_1)
  33.  
  34. tr_2 = pg.Scatter(
  35. x = dataset['x'],
  36. y = dataset['y2_stack'],
  37. text = dataset['y2_text'],
  38. hoverinfo = 'x+text',
  39. mode = 'lines',
  40. name = 'y2',
  41. fill = 'tonexty' #填充方式:到下方的另一条线
  42. )
  43. data_g.append(tr_2)
  44.  
  45. tr_3 = pg.Scatter(
  46. x = dataset['x'],
  47. y = dataset['y3_stack'],
  48. text = dataset['y3_text'],
  49. hoverinfo = 'x+text',
  50. mode = 'lines',
  51. name = 'y3',
  52. fill = 'tonexty'
  53. )
  54. data_g.append(tr_3)
  55.  
  56. layout = pg.Layout(title="field area plots", xaxis={'title':'x'}, yaxis={'title':'value'})
  57. fig = pg.Figure(data=data_g, layout=layout)
  58. plotly.offline.plot(fig, filename=name)
  59.  
  60. if __name__ == '__main__':
  61. filled_area_plots("C:/Users/fuqia/Desktop/bar.html")

小结

本文介绍了利用python-plotly绘制数据图的方法,实例中 线图(line plots)、散点图(scatter plots)、柱状图(bar charts)、饼图(pie charts)以及填充堆叠线图(filled area plots)这五种典型的图表基本上涵盖了大部分类型的测试数据,各位小伙伴可以加以变形绘制出更多的漂亮图标。

文中所示代码:test_plotly_jb51.rar

参考资料

1. https://plot.ly/python/basic-charts/

2. https://images.plot.ly/plotly-documentation/images/python_cheat_sheet.pdf

Python使用plotly绘制数据图表的方法的更多相关文章

  1. 5 种使用 Python 代码轻松实现数据可视化的方法

    数据可视化是数据科学家工作中的重要组成部分.在项目的早期阶段,你通常会进行探索性数据分析(Exploratory Data Analysis,EDA)以获取对数据的一些理解.创建可视化方法确实有助于使 ...

  2. [转]5 种使用 Python 代码轻松实现数据可视化的方法

    数据可视化是数据科学家工作中的重要组成部分.在项目的早期阶段,你通常会进行探索性数据分析(Exploratory Data Analysis,EDA)以获取对数据的一些理解.创建可视化方法确实有助于使 ...

  3. 绘制数据图表的又一利器:C3.js

  4. Python使用Plotly绘图工具,绘制饼图

    今天我们来学习一下如何使用Python的Plotly绘图工具,绘制饼图 使用Plotly绘制饼图的方法,我们需要使用graph_objs中的Pie函数 函数中最常用的两个属性values,用于赋值给需 ...

  5. Python使用Plotly绘图工具,绘制甘特图

    今天来讲一下如何使用Python 的绘图工具Plotly来绘制甘特图的方法 甘特图大家应该了解熟悉,就是通过条形来显示项目的进度.时间安排等相关情况的. 我们今天来学习一下,如何使用ployly来绘制 ...

  6. Python使用Plotly绘图工具,绘制直方图

    今天我们再来讲解一下Python使用Plotly绘图工具如何绘制直方图 使用plotly绘制直方图需要用到graph_objs包中的Histogram函数 我们将数据赋值给函数中的x变量,x = da ...

  7. Python使用Plotly绘图工具,绘制面积图

    今天我们来讲一下如何使用Python使用Plotly绘图工具,绘制面积图 绘制面积图与绘制散点图和折线图的画法类似,使用plotly graph_objs 中的Scatter函数,不同之处在于面积图对 ...

  8. 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据

    基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据   by:授客 QQ:1033553122 实现功能 测试环境 环境搭建 使用前提 使用方法 运行程序 效果展 ...

  9. Python使用Plotly绘图工具,绘制柱状图

    使用Plotly绘制基本的柱状图,需要用到的函数是graph_objs 中 Bar函数 通过参数,可以设置柱状图的样式. 通过barmod进行设置可以绘制出不同类型的柱状图出来. 我们先来实现一个简单 ...

随机推荐

  1. Unity 3D接入ShareSDK流程2

    Unity开发VR之Vuforia 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  2. IIS 7上导入SSL证书

    1.将SSL证书文件上传至服务器 2.导入证书 1)在IIS设置项中,打开‘服务器证书’ 2)选择导入 3)将网站绑定SSL证书

  3. SQLI DUMB SERIES-6

    less6 输入 ?id=1" 说明双引号未被过滤,输入的id被一对双引号所包围,存在注入点,可以闭合双引号. 而输入正常时 情况和less5相同,因此注入同less5.

  4. HDU 1873 看病要排队 优先队列

    Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  5. 2018.4.23 《深入理解Java虚拟机:JVM高级特性与最佳实践》笔记

    一.Java内存区域与内存溢出 1.程序计数器是一块较小的内存空间,它可看作是当前线程所执行的字节码的行号指示器.字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令.各条线程 ...

  6. 自我复制的3D打印机

    RepRap 是人类历史上第一部可以自我复制型的机器. https://reprap.org/wiki/RepRap RepRap 是一部可以生成塑料实物的免费桌面型 3D 打印机.由于 RepRap ...

  7. 组合数据类型,英文词频统计 python

    练习: 总结列表,元组,字典,集合的联系与区别.列表,元组,字典,集合的遍历. 区别: 一.列表:列表给大家的印象是索引,有了索引就是有序,想要存储有序的项目,用列表是再好不过的选择了.在python ...

  8. js中的eval函数另一种实现

    js中有一个函数eval可以一段文本改为js代码,本来使用eval也可以达到目的,但自己看了不少资料都不推荐使用eval函数,于是自己就在思考有没有不使用eval的方法?  其实需求很简单,就是把一个 ...

  9. oracle-sql系统学习-ddl-dml

    e41084-04 oracle database sql language reference 11g release 2 sql语句类型 ddl alter ...除了alter session和 ...

  10. 非递归和递归分别实现求第n个斐波那契数。

    菲波那切数列为:0 1 1 2 3 5 8 13 21 34... 规律:从第三个数字起后面的每一个数字都是前两个数字的和. 非递归算法: #include<stdio.h> int ma ...