Python数据可视化神器 – cufflinks

释放双眼,带上耳机,听听看~!
本文介绍了基于Python的数据可视化库cufflinks,它是plotly的高级封装,可以简单而强大地创建交互式的、美观的图表和可视化。文章将介绍cufflinks的安装、使用方法,以及绘制的图形类型和参数。

公众号:尤而小屋
作者: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()

Python数据可视化神器 - cufflinks

查看某个图形的参数:

In [3]:

cf.help("violin")

Python数据可视化神器 - 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()

Python数据可视化神器 - 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")  # 等价

Python数据可视化神器 - cufflinks

对折线进行填充:

In [11]:

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

Python数据可视化神器 - cufflinks

散点图

In [12]:

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

Python数据可视化神器 - cufflinks

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

In [13]:

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

Python数据可视化神器 - cufflinks

气泡图

In [14]:

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

Python数据可视化神器 - cufflinks

柱状图

In [15]:

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

Python数据可视化神器 - cufflinks

# 堆叠柱状图 

df.iplot(kind="bar", barmode="stack")

Python数据可视化神器 - cufflinks

取出部分dataframe数据下绘图:

In [17]:

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

Python数据可视化神器 - cufflinks

水平柱状图

In [18]:

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

Python数据可视化神器 - cufflinks

也可以通过参数orientation进行设置:v-垂直方向,h-水平方向

In [19]:

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

Python数据可视化神器 - cufflinks

箱型图box

In [20]:

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

Python数据可视化神器 - cufflinks

# ['all', 'outliers', 'suspectedoutliers', False]

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

Python数据可视化神器 - cufflinks

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

Python数据可视化神器 - cufflinks

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

Python数据可视化神器 - cufflinks

直方图

In [24]:

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

Python数据可视化神器 - 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)')

Python数据可视化神器 - 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")

Python数据可视化神器 - 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"
        )

Python数据可视化神器 - cufflinks

Python数据可视化神器 - cufflinks

散点矩阵图

In [30]:

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

Python数据可视化神器 - 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  # 是否显示图例
                   )

Python数据可视化神器 - cufflinks

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

AI大模型在开发者日常工作流中的应用及注意事项

2023-12-12 14:35:14

AI教程

深度学习入门系列(三):一文看懂 路透社新闻数据

2023-12-12 14:43:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索