在谈到数据可视化的时候,相信大多数的读者会想到“matplotlib”、“pyecharts”等第三方模块,今天小编要介绍的可视化框架叫做“plotly”,通过构建基于HTML的交互式图表来显示信息,可创建各种形式的精美图表。当然,除了“plotly”这个模块,本文也会提到“cufflinks”也就是对“plotly”模块封装过之后的模块,相当于是“seaborn”之于“matplotlib”的关系。
01
下载与导入数据
下载安装相关的库,通过“pip”命令行即可实现,
代码语言:javascript复制!pip install plotly
导入相关的模块并读取数据,并对可视化做一定的设置
代码语言:javascript复制# plotly standard imports
import plotly.graph_objs as go
import chart_studio.plotly as py
# Cufflinks wrapper on plotly
import cufflinks
# Data science imports
import pandas as pd
from plotly.offline import iplot
cufflinks.go_offline()
# Set global theme
cufflinks.set_config_file(world_readable=True, theme='pearl')
df = pd.read_parquet('medium_data_2019_01_06')
02
直方图
我们先从简单的画直方图开始,代码如下
代码语言:javascript复制df['claps'].iplot(kind='hist', xTitle='claps',
yTitle='count', title='Claps Distribution')
这和大家之前使用“matplotlib”模块十分的想类似,我们只好需要用“iplot”而不是“plot”即可,最后显示的直方图在交互性上面、以及美观程度有着显著的提升,同时我们能够对数据进行放大,看到更加具体的数据走势
上面的可视化结果是对单个变量的走势的,当然要是我们觉得直方图中图形的颜色、线条的粗细不是很满意的时候,我们也可以通过其中的几个参数来进行调整
代码语言:javascript复制df['claps'].iplot(kind='hist', xTitle='claps',
yTitle='count', title='Claps Distribution',
width = 2, colors = 'lightblue')
结果如下图所示
当然我们也可以将两个变量一起来做直方图的可视化,例如下面的代码
代码语言:javascript复制df['time_started'] = df['started_date'].apply(to_time)
df['time_published'] = df['published_date'].apply(to_time)
df[['time_started', 'time_published']].iplot(
kind='hist',
linecolor='black',
bins=24,
histnorm='percent',
bargap=0.1,
opacity=0.8,
barmode='group',
xTitle='Time of Day',
yTitle='(%) of Articles',
title='Time Started and Time Published')
我们来看一下最后出来的效果如何,下图分别四两个类别的直方图
03
箱型图
除了直方图之外,箱型图在统计分析的过程中也被经常地使用,透过箱型图,我们能够直观地识别出数据中的异常值,以及直观地判断数据离散分布情况,了解数据分布状态,它的代码如下
代码语言:javascript复制df[df['read_time'] <= 10].pivot(
columns='read_time', values='reads').iplot(
kind='box', colorscale='set2',
xTitle='Read Time',
yTitle='Number of Reads',
title='Box Plot of Reads by Reading Time')
而最后出来的结果
箱型图出来的结果我们可以看到其中的异常值、中位数、以及上四分位数和下四分位数,十分地直观明了。对于交互性的可视化绘制结果来说,我们能够放大看到数据集中的一部分数据,更加清楚地看到里面的分布。
04
折线图
尤其是在时间序列的问题上,折线图就显得十分的实用了,能够从中看出趋势,看出数据的走势等等,例如如下数据集
代码语言:javascript复制tds = df[df['publication'] == 'Towards Data Science'].set_index('published_date')
我们先从一个变量的折线图的绘制开始说起,代码如下
代码语言:javascript复制tds['read_time'].iplot(
mode='lines markers',
opacity=0.8,
size=8,
symbol=1,
xTitle='Date',
yTitle='Read Time (min)',
title='Read Time Trends')
最后出来的结果正如下面所示
正如直方图中,可以针对两个变量来进行可视化,折线图也亦是如此,我们来看一下“fans”和“claps”这两列在时间的不断推进过程中,走势是如何发生变化的,代码如下,几乎和上面的单个变量的可视化代码十分地类似
代码语言:javascript复制tds[['claps', 'fans']].iplot(
mode='lines markers',
opacity=0.8,
size=8,
symbol=1,
xTitle='Date',
yTitle='Fans and Claps',
title='Fans and Claps over Time')
最后出来的效果如下图所示
05
未完待续
当然在本文当中小编只是例举了几个用“plotly”做的比较常见的图形,除了上面的几种图形之外,还有其他的例如散点图、饼图、水平柱状图、热力图等等就在下一篇文章中再具体说明,希望大家能够有所收获