python 分组箱线图_Python数据科学实践 | 绘图模块4
点击关注了解更多精彩内容!!
大家好,基于Python的数据科学实践课程又到来了,大家尽情学习吧。本期内容主要由智亿同学与政委联合推出。
本次将继续学习如何用Plotly绘制更加美观的统计图。具体的,我们讲学会如何使用Plotly绘制主流图形。
绘制箱线图
还记得在Matplotlib小节,绘制箱线图的步骤吗?接下来,我们一起学习如何绘制箱线图。这里只展示与上一小节略有区别的参数,未展示的参数可以认为是一致的。
表1 箱线图go.Box()
例1 箱线图
1def group_buyer(x): 2 if x 500: 3 return 0 4 if x 1000: 5 return 1 6 if x 1500: 7 return 2 8 if x 2000: 9 return 310 else:11 return None1213# 分组14merge_data['购买人数等级'] = merge_data['购买人数'].apply(group_buyer)1516# 1、设置图的layout17layout = go.Layout(18 title = '购买人数等级评价数关系图',19 xaxis = {20 'title': '购买人数等级',21 },22 yaxis = {23 'title': '评价数',24 'range': [0, 1500]25 },26 showlegend = True27)2829# 2、画图30trace1 = go.Box(31 x = merge_data['购买人数等级'],32 y = merge_data['评价数'],3334 marker = {35 'color': 'blue',36 },37 name = '购买人数等级',38)394041fig = go.Figure(data=[trace1], layout=layout)42iplot(fig)
运行结果如图1。
图1 箱线图
每个箱体颜色都一样,看起来一点都不高端大气上档次,让我们来点美化!
例2 箱线图美化
1d1 = merge_data['评价数'][merge_data['购买人数'] 500] 2d2 = merge_data['评价数'][merge_data['购买人数'] >= 500][merge_data['购买人数'] 1000] 3d3 = merge_data['评价数'][merge_data['购买人数'] >= 1000][merge_data['购买人数'] 1500] 4d4 = merge_data['评价数'][merge_data['购买人数'] >= 1500][merge_data['购买人数'] 2000] 5ys = [d1, d2, d3, d4] 6xs = [1, 2, 3, 4] 7 8import numpy as np 9colors = ['hsl('+str(h)+',50%'+',50%)' for h in linspace(0, 360, 4)]1011# 1、设置图的layout12layout = go.Layout(13 title = '购买人数等级评价数关系图',14 xaxis = {15 'title': '购买人数等级',16 },17 yaxis = {18 'title': '评价数',19 'range': [0, 1500]20 },21 showlegend = True22)2324# 2、画图25traces = []26for x, y, c in zip(xs, ys, colors):27 trace = go.Box(28 y = y, 29 marker = {30 'color': c,31 },32 name = x,33 boxpoints = 'all'34 )35 traces.append(trace)3637fig = go.Figure(data=traces, layout=layout)38iplot(fig)
运行结果如图2。
图2 箱线图美化
是不是瞬间又提升了逼格呢 :-)。构建不同颜色的箱线图,首先得把每组数据分好,再通过for循环的方式插入Trace,这样就调用4次go.Box()函数,最终画在一幅图上。因为每次调用Box函数时,只画一组数据点,所以x就不用设置了(没有分组数据了)。
绘制柱状图(多子图)
在Matplotlib小节,柱状图使用了两个子图。到目前为止,我们并没有使用Plotly进行子图绘制,接下来,我们一起学习如何用Plotly绘制多子图柱状图。再次强调,共同的参数在此不再罗列。
表2 柱状图的Layout参数
表3 多子图
例3 柱状图
1from plotly import tools 2 3width = 0.25 4labels = ['人均', '团购价', '评价数', '购买人数'] 5ticks = [0.25, 1.25, 2.25] 6ticklabels = ['低评分', '中评分', '高评分'] 7 8trace1 = go.Bar( 9 x = ticklabels,10 y = data_for_bar[labels[0]],11 width = width,12 name = labels[0]13)14trace2 = go.Bar(15 x = ticklabels,16 y = data_for_bar[labels[1]],17 name = labels[1]18)19trace3 = go.Bar(20 x=ticklabels,21 y=data_for_bar[labels[2]],22 width = width,23 name = labels[2]24)25trace4 = go.Bar(26 x=ticklabels,27 y=data_for_bar[labels[3]],28 width = width,29 name = labels[3]30)3132data = [trace1, trace2, trace3, trace4]33fig = tools.make_subplots(rows=1, cols=2, subplot_titles=('团购价商家等级', '购买人数商家等级'))34fig.append_trace(trace1, 1, 1)35fig.append_trace(trace2, 1, 1)36fig.append_trace(trace3, 1, 2)37fig.append_trace(trace4, 1, 2)3839# 注意多子图情况下,layout中的xy轴一定要带1,2,3,比如xaxis1代表第一幅图的x轴。40fig['layout'].update(41 title = '多子图绘制',42 xaxis1 = {43 'title': '商家等级',44 },45 yaxis1 = {46 'title': '团购价',47 'range': [0, 160]48 },49 xaxis2 = {50 'title': '商家等级',51 },52 yaxis2 = {53 'title': '购买人数',54 'range': [0, 350]55 },56 showlegend = True,57 barmode = 'group',58 bargap = 0.5,59)6061iplot(fig)
运行结果如图3所示。
图3 柱状图
注意,这里由于每个Trace要指定到相应的子图上,所以Figure对象要提前于Layout创建,Layout的修改要使用update的方法进行修改。
在上一节,我们利用了Matplolib进行循环的方式绘制多子图柱状图,这里如何使用Plotly进行循环呢?赶紧动手试一试!
绘制饼图、直方图
饼图、直方图的参数设置比较简单。
表4 饼图
例4 饼图
1# 1、设置图的layout 2layout = go.Layout( 3 title = '商家评分等级', 4 showlegend = True 5) 6 7trace1 = go.Pie( 8 labels = ['中低评分', '高评分'], 9 values = [9, 151],10 hoverinfo = 'label+percent', textinfo = 'value', 11 textfont = dict(size=20),12 marker = {13 'colors': ['#FEBFB3', '#E1396C'],14 'line': {15 'width': 2,16 'color': '#fff'17 }18 },19)2021fig = go.Figure(data=[trace1], layout=layout)22iplot(fig)
运行结果如图4所示。
图4 饼图
再来看看直方图。
表5 直方图
例5 直方图
1# 1、设置图的layout 2layout = go.Layout( 3 title = '商家评分等级', 4 showlegend = True, 5 width = 600, 6 height = 400, 7 yaxis = { 8 'range': [0, 160], 9 }10)1112trace1 = go.Histogram(13 x = merge_data2['评分'],14 name = '商家评分',15 nbinsx = 30,16 cumulative = {17 'enabled': True,18 'direction': 'increasing',19 },20 xbins = {21 'start': 0,22 'end': 5,23 'size': 0.1,24 },25 marker = {26 'color': 'red',27 'line': {28 'color': 'yellow',29 'width': 0.530 }31 }32)3334fig = go.Figure(data=[trace1], layout=layout)35iplot(fig)
运行结果如图5。
图5 直方图
总结
整体来说,只要理解了Plotly的基于Json的实现方法,学习起来几乎没有什么难度。可能有小伙伴会觉得:Plotly参数这么多,记起来真难且慢。在你想说完这句话前,请把之前小节的参数说明再过一遍,Layout参数其实只有8个常用的,Scatter()、Box()、Bar()、Pie()、Histogram()这五个图形至少有一半参数是共通的(比如marker、text),不一样的只是图形的输入和排列方式,稍加运用即可熟练掌握。
此外,Plotly还近百种图形,地图、3D图、网状图、蜡烛图,甚至动态图也不在画下。无论是什么专业,一定有你满意的图形!
好了,今天就讲到这里。
—END—
作业:打开Plotly官网,并找到其中的绘图例子。找到你喜欢的一个例子(例如如下社交网络图),学习绘制这样的图形。
▼往期精彩回顾▼初步搭建数据科学工作环境
Conda的使用
Spyder入门
Jupyter入门
Markdown
简单读写数据
数据类型
数据结构
控制流
函数与模块
Numpy
pandas1
pandas2
pandas3
pandas4
绘图模块1
绘图模块2
绘图模块3
python 分组箱线图_Python数据科学实践 | 绘图模块4相关推荐
- python panda 库箱线图_Python数据可视化:箱线图多种库画法
概念 箱线图通过数据的四分位数来展示数据的分布情况.例如:数据的中心位置,数据间的离散程度,是否有异常值等. 把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q ...
- 用python画小花_如何用python制作箱线图
hi,我小花花又来了 箱线图,一种被广泛应用在数据可视化上的图表,它可以用来反映一组或多组连续型定量数据分布的中心位置和散布范围,因形状如箱子而得名.它最大的优点是可以不受异常值的影响,能够准确稳定地 ...
- seaborn画分组箱线图
seaborn画分组箱线图 一.先上图 二.程序 一.先上图 二.程序 import pandas as pd import seaborn as sns import matplotlib.pypl ...
- Python数据分析箱线图
[小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python数据分析箱线图 [太阳]选择题 箱线图不可以展现以下哪一项. A选项:最小值 B ...
- python箱线图_Python 箱线图 plt.boxplot() 参数详解
Python 绘制箱线图主要用 matplotlib 库里 pyplot 模块里的 boxplot() 函数. plt.boxplot() 参数详解 plt.boxplot(x, # 指定要绘制箱线图 ...
- 数据清洗python实现箱线图_GitHub - nonefirst/data_analysis: 基于Python的南京二手房数据采集及可视化分析...
基于Python的南京二手房数据采集及可视化分析 1 内容简介 首先通过爬虫采集链家网上所有南京二手房的房源数据,并对采集到的数据进行清洗:然后,对清洗后的数据进行可视化分析,探索隐藏在大量数据背后的 ...
- python画k线图_python画k线图
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! import datetime import pandas_datareader ...
- python画k线图_Python绘制K线图
不管是对量化分析师还是普通的投资者来说,K线图(蜡烛图)都是一种很经典.很重要的工具.在K线图中,它会绘制每天的最高价.最低价.开盘价和收盘价,这对于我们理解股票的趋势以及每天的多空对比很有帮助. 一 ...
- python 数据库表结构转为类_Python数据科学实践 | 数据库1
大家好,基于Python的数据科学实践课程又到来了,大家尽情学习吧.本期内容主要由智亿同学与政委联合推出. 数据库永远是数据管理上最值得使用的工具.而把所收集的大量数据放入数据库之后再处理是数据科学实 ...
最新文章
- 使用HTML5监測站点性能
- jquery mobile的a标签点击无法跳转的问题
- RefreshListView中onItemClick点击错位
- python3.7和3.5_Ubuntu更新python3.5到python3.7
- Python django解决跨域请求的问题
- python斐波那契数列30_python的30个骚操作
- 时间机器与iCloud云盘:应该使用哪个来备份你的Mac?
- 最易理解的傅里叶分析讲解
- Python中流程控制-for循环(序列/字典举例)
- 机器学习教程 之 随机森林: 算法及其特征选择原理
- 数据分析之数据分类了解
- android 自定义 锁屏
- 05-----关于C++使用VS时出现 error C2248: “xxx“ 无法访问private成员(在“MySpdlog“类中声明)
- 微信小程序微信原生小程序如何通过后端返回的二进制流导出excel文件并保存和转发
- 如何编辑二维码内容并批量生成
- linux下安装pymssql
- WAMP Server 安装教程
- HC05蓝牙模块(一)
- 全球前十大一致性最好的交易系统之一Aberration(附源码)
- 18000-6c协议阅读笔记
热门文章
- DecimalFormat的用法
- 解决Windows Server2008 R2中IE开网页时弹出阻止框(Windows Server2008网页无法打开的问题)...
- perl -p -i -e s/aaaaa/bbbbb/g ./*.sql
- HTML 5 中的新元素
- ES5_03_Object扩展
- 计算机和HMI设备通信之程序上下载
- 好了好久时间,终于写成了第一个Python代码
- hdu 5148 cities 树形DP
- 使用游标逐行更新数据
- asp.net 2.0