干货分享 | 关于“Plotly”的可视化教程(一)

2021-07-19 12:20:00 浏览数 (1)

在谈到数据可视化的时候,相信大多数的读者会想到“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”做的比较常见的图形,除了上面的几种图形之外,还有其他的例如散点图、饼图、水平柱状图、热力图等等就在下一篇文章中再具体说明,希望大家能够有所收获

0 人点赞