大众号:尤而小屋
作者:Peter
修改:Peter

大家好,我是Peter~

今天给大家引荐一个高档的可视化神器:cufflinks

学习过可视化库matplotlib和seaborn的朋友都知道:seaborn是matplotlib的高档封装。在这里小编也告知你:cufflinks便是plotly的高档封装

plotly的绘图已经够简洁和高雅,没有想到cufflinks更甚之。在这里用一句话描述cufflinks:

cufflinks之于plotly,犹如seaborn之于matplotlib

一个美不胜收的可视化库cufflinks

那到底什么是cufflinks呢?

cufflinks是一个根据Python的数据可视化库,它建立在Plotly库之上,为用户供给了一种简略而强大的方式来创建交互式的、漂亮的图表和可视化。它的规划旨在使绘图进程变得简略且具有灵活性,无需编写杂乱的代码。

运用cufflinks能够轻松地将Pandas DataFrame和Series目标转换为交互式图表。它供给了与Pandas严密集成的API,使数据可视化的进程变得直观且易于操作。经过几行简略的代码,就能够创建各种类型的图表,包含线图、柱状图、散点图、面积图、箱线图、热图等。

cufflinks还具有许多快捷的功用和选项,可让用户自定义图表的外观和样式。此外能够设置标题、轴标签、色彩、图例等,并经过拖动和缩放等交互式功用与图表进行互动。

此外,cufflinks还供给了简便的导出功用,能够将生成的图表保存为静态图画或动态HTML文件,以便与别人共享或嵌入到网页中。

装置

装置非常简略:

pip install cufflinks
# 建议用清华源加快
pip install cufflinks -i https://pypi.tuna.tsinghua.edu.cn/simple

运用

In [1]:

import pandas as pd
import numpy as np
import cufflinks as cf
# 设置配置文件
#  theme的7个选择项: 'ggplot', 'pearl', 'solar', 'space', 'white', 'polar', 'henanigans'
cf.set_config_file(world_readable=True, theme="pearl", offline=True) 
%reload_ext autoreload
%autoreload 2

检查cufflinks的协助文档,目前cufflinks制作的图形:

In [2]:

cf.help()

高级可视化神器:cufflinks

检查某个图形的参数:

In [3]:

cf.help("violin")

高级可视化神器:cufflinks

运用说明:

DataFrame.Figure.iplot()
  • DataFrame:pandas中的数据框
  • Figure:指定图形,比方box、bar等
  • iplot():参数设置

参数说明:

df.iplot(
    kind='scatter',data=None,layout=None,filename='',sharing=None,
    title='',xTitle='',yTitle='',zTitle='',theme=None,
    colors=None,colorscale=None,fill=False,width=None,dash='solid',
    mode='',interpolation='linear',symbol='circle',size=12,barmode='',
    sortbars=False,bargap=None,bargroupgap=None,bins=None,histnorm='',
    histfunc='count',orientation='v',boxpoints=False,annotations=None,keys=False,
    bestfit=False,bestfit_colors=None,mean=False,mean_colors=None,categories='',
    x='',y='',z='',text='',gridcolor=None,zerolinecolor=None,
    margin=None,labels=None,values=None,secondary_y='',secondary_y_title='',
    subplots=False,shape=None,error_x=None,error_y=None,error_type='data',
    locations=None,lon=None,lat=None,asFrame=False,asDates=False,
    asFigure=False,asImage=False,dimensions=None,asPlot=False,asUrl=False,online=None,**kwargs,
)

cufflinks的7大绘图主题风格:

In [4]:

cf.getThemes()

Out[4]:

['ggplot', 'pearl', 'solar', 'space', 'white', 'polar', 'henanigans']

cufflinks支持的色盘:

In [5]:

cf.colors.scales()

高级可视化神器:cufflinks

数据说明

咱们运用sklearn自带的iris数据集:

In [6]:

from sklearn import datasets
iris = datasets.load_iris()

In [7]:

df = pd.DataFrame(iris.data,columns=iris.feature_names)
df.head(3)

Out[7]:

sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2

In [8]:

df["target"] = iris.target
df.head(3)

Out[8]:

sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target
0 5.1 3.5 1.4 0.2 0
1 4.9 3.0 1.4 0.2 0
2 4.7 3.2 1.3 0.2 0

根据对应联系进行转换:

0:'setosa', 1:'versicolor', 2:'virginica'

In [9]:

df["id"] = df["target"].map({0:'setosa', 1:'versicolor', 2:'virginica'})
df.head(3)

Out[9]:

sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target id
0 5.1 3.5 1.4 0.2 0 setosa
1 4.9 3.0 1.4 0.2 0 setosa
2 4.7 3.2 1.3 0.2 0 setosa

折线图

默许是折线图

In [10]:

df.iplot()

# df.iplot(kind="scatter")  # 等价

高级可视化神器:cufflinks

对折线进行填充:

In [11]:

df.iplot(kind="scatter",fill=True)

高级可视化神器:cufflinks

散点图

In [12]:

df.iloc[:100,:4].iplot(kind="scatter",
                       mode="markers", # 指定类型
                       # colors=["red","orange","blue","black"], # 色彩
                       size=7,  # 巨细
                       theme="henanigans",  # 指定主题
                       symbol="star"  # 散点形状;默许是圆点
                      )

高级可视化神器:cufflinks

制作带有回归趋势的散点图:

In [13]:

df.iloc[:,:3].iplot(kind="scatter",
                    mode="markers", 
                    bestfit=True,  # 拟合趋势
                    bestfit_colors=["red","blue","black"]  # 拟合线色彩
                      )

高级可视化神器:cufflinks

气泡图

In [14]:

df.iplot(kind="bubble",x="sepal length (cm)",y="sepal width (cm)",size="target")

高级可视化神器:cufflinks

柱状图

In [15]:

df.head(20).iplot(kind="bar")

高级可视化神器:cufflinks

# 堆叠柱状图 
df.iplot(kind="bar", barmode="stack")

高级可视化神器:cufflinks

取出部分dataframe数据下绘图:

In [17]:

df.iloc[:30,:3].iplot(kind="bar", barmode="stack")

高级可视化神器:cufflinks

水平柱状图

In [18]:

df.iloc[:20,:2].iplot(kind="barh", barmode="stack")

高级可视化神器:cufflinks

也能够经过参数orientation进行设置:v-垂直方向,h-水平方向

In [19]:

df.iloc[:20,:2].iplot(kind="bar",
                      barmode="stack", 
                      orientation="h",
                      theme="space",  # 指定主题
                     )

高级可视化神器:cufflinks

箱型图box

In [20]:

df.iloc[:60,:4].iplot(kind="box")

高级可视化神器:cufflinks

# ['all', 'outliers', 'suspectedoutliers', False]
df.iloc[:60,:4].iplot(kind="box",boxpoints="all")

高级可视化神器:cufflinks

df.iloc[:60,:4].iplot(kind="box",boxpoints="outliers")

高级可视化神器:cufflinks

df.iloc[:60,:4].iplot(kind="box",boxpoints="suspectedoutliers")

高级可视化神器:cufflinks

直方图

In [24]:

df.iloc[:,:4].iplot(kind="histogram")

高级可视化神器:cufflinks

小提琴图

In [25]:

df.columns

Out[25]:

Index(['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)',       'petal width (cm)', 'target', 'id'],
      dtype='object')

In [26]:

df.iloc[:,:].iplot(kind="violin",data_header='sepal length (cm)')

高级可视化神器:cufflinks

热力求heatmap

咱们需求先生成透视表的数据:

In [27]:

data = pd.pivot_table(df,index="id",values=["sepal length (cm)","sepal width (cm)"])
data

Out[27]:

sepal length (cm) sepal width (cm)
id
setosa 5.006 3.428
versicolor 5.936 2.770
virginica 6.588 2.974

In [28]:

data.iplot(kind="heatmap")

高级可视化神器:cufflinks

3d图

In [29]:

df.iplot(kind="scatter3d",
         x="sepal length (cm)", # 指定三个轴的数据
         y="sepal width (cm)",
         z="petal length (cm)",
         categories="id",
         xTitle="sepal length",  # 指定3个轴的标题
         yTitle="sepal width",
         zTitle="petal length"
        )

高级可视化神器:cufflinks

高级可视化神器:cufflinks

散点矩阵图

In [30]:

df.iloc[:,:4].scatter_matrix()

高级可视化神器:cufflinks

子图

In [31]:

df.iloc[:,:4].iplot(kind="bar",
                    barmode="stack", # 模式
                    title="制作子图",  # 标题
                    subplots=True, # 子图开端
                    shape=(2,2),  # n行m列
                    shared_xaxes=True,  # 是否共享x轴
                    vertical_spacing=0.08,  # 垂直和水平间距
                    horizontal_spacing=0.05,
                    subplot_titles=True,  # 开启子图称号
                    legend=False  # 是否显示图例
                   )

高级可视化神器:cufflinks