专栏首页JAVAandPython君这个可视化库,有点牛逼...

这个可视化库,有点牛逼...

前言

好久不见,今天终于可以继续来写数据分析系列的文章了。在之前的文章中,我介绍过matplotlib的简单使用,同时也分享了几篇matplotlib应用实战的文章(如果你没看的话,建议先去看下),相信大家对于matplotlib有了一定的了解,其实总体来说比较简单,就是一个画图工具,只要我们把一些参数给记住就差不多了。这一章节主要介绍了Python可视化中除了matplotlib以外,另一个强大的可视化第三方库---seaborn

seaborn

Seaborn is a library for making statistical graphics in Python. It is built on top of matplotlib and closely integrated with pandas data structures.

上面这段话是摘自seaborn的官网,翻译过来的意思就是Seaborn是一个制作统计图形的第三方Python库。它是基于matplotlib而建立的并且它与pandas数据结构有着紧密的连接。

其实简单来说,它就是一个matplotlib的升级版,作为升级版固然会让我们的使用更加的简单,下面我们来看看seaborn。

安装seaborn

pip安装:

pip install seaborn

conda安装:

conda install seaborn

这里需要注意的一点是,seaborn依赖于Python3.6及其以上的版本。

并且需要强制安装以下的依赖第三方库:

numpy (>= 1.13.3)

scipy (>= 1.0.1)

pandas (>= 0.22.0)

matplotlib (>= 2.1.2)

内置数据集

seaborn有一个让我比较惊艳的地方是它自带有数据集,我们可以直接通过相关的函数就可以进行调用,数据集的文件也可以在下面的GitHub地址中获取。

https://github.com/mwaskom/seaborn-data

对于数据集的使用,我们这里可以引用一个官方的例子来实现:

import seaborn as sns
import matplotlib.pyplot as plt
import ssl
 # 此处的代码是防止ssl报错
ssl._create_default_https_context = ssl._create_unverified_context
sns.set(style="ticks") 

# 导入anscombe数据集
df = sns.load_dataset("anscombe")  


sns.lmplot(x="x", y="y", col="dataset", hue="dataset", data=df,
           col_wrap=2, ci=None, palette="muted", height=4,
           scatter_kws={"s": 50, "alpha": 1})
# 在pycharm中,我们需要通过matplotlib来让seaborn图形显示
plt.show()

效果图:

效果图1

seaborn API

要想知道seaborn怎么使用,能够画哪些图形,了解它的API是必不可少的。这里需要注意的是seaborn中的数据集必须是pandas中的Dataframe或者Numpy中的数组,这就说明了为什么pandas和numpy是必备的依赖库。

1.lineplot

seaborn.lineplot(x=None, y=None, hue=None, size=None, style=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, dashes=True, markers=None, style_order=None, units=None, estimator='mean', ci=95, n_boot=1000, seed=None, sort=True, err_style='band', err_kws=None, legend='brief', ax=None, **kwargs)

通过单词的字面意思,我们可以想到的是折线图,确实lineplot可以帮助我们画出漂亮的折线图。它的属性值非常的多,这里我们也不会一一全部介绍。

首先直接扔出代码

import seaborn as sns

import matplotlib.pyplot as plt
import ssl
ssl._create_default_https_context = ssl._create_unverified_context # 解决ssl报错

# 拿到名字为 fmri 的数据集
fmri = sns.load_dataset("fmri")

# 解析请继续往下看
ax = sns.lineplot(x="timepoint", y="signal",data=fmri,
                  style="event", hue="event", markers=True
                  , ci=0, lw=1, 
                )

plt.show()

效果图

首先,大家可以看下数据集

https://github.com/mwaskom/seaborn-data/blob/master/fmri.csv

ax = sns.lineplot(
x="timepoint", 
y="signal",
data=fmri,
style="event", 
hue="event", 
markers=True, 
ci=0, 
lw=1, 
)             
  • 首先xy不用说,横纵坐标。
  • data顾名思义就是我们上面的数据集
  • style这里其实是和markers配合演出的,通过style中的值来区分不同的数据,然后来通过不同的标记来标记不同的数据集。例如在fmri数据集中的event列中,有”stim“和”cue“两种数据,所以展示出来的也就是两根折线
  • hue就是颜色映射,通俗点来说就是不同的数据对应不同的颜色。
  • ci控制的是折线的阴影面积,如果ci=100,则是下面的效果
  • lw控制的是折线的宽度,如果lw=10则为

2.barplot

import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

x = np.arange(8)
y = np.array([12,15,13,16,23,11,5,6])

df = pd.DataFrame({"x": x,"y": y})

sns.barplot("x","y",palette="RdBu_r",data=df)
plt.xticks(rotation=90)
plt.show()

效果图:

这里的代码顾名思义就非常的简单易懂了,其中palette="RdBu_r"是使用一种颜色模板


由于还有非常非常多的图表样式,大家也不用心急全部掌握,只需要根据自己的需求查询API即可。大家可以通过下面的链接去seaborn的API官网查看它的所以API文档。之后我们会在实战中给大家写出更多的图标样式,敬请期待!

http://seaborn.pydata.org/api.html

本文分享自微信公众号 - JAVAandPython君(JAVAandPythonJun),作者:kuls

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 经验总结 | 独立开发者如何打造自己的产品?

    作为一名开发者,我们有时会单枪匹马地去写一些自己想做的app、网站、系统。如果我们是初次去写一个项目,该如何下手?相信这篇文章会给你一些帮助!

    Python进击者
  • 【每日小知识】正向代理and反向代理

    Python进击者
  • 只需几行代码!这个python库轻松实现了当年的QQ轰炸机

    记得高中那会各类QQ轰炸机、短信轰炸机遍布网络,当时由于技术比较菜,不太懂如何制作的,只知道如何使用。最近我看到一个Python库,非常有意思,可以操作键盘和鼠...

    Python进击者
  • 参考基因组用错了单细胞转录组流程照样可以走通

    当然,这不是重点,麻烦的事情是粉丝仅仅是寄给我数据和md5,我校验后文件都是完整的,就直接上流程了,结果,打开一个运行日志后才发现不太对劲额。

    生信技能树
  • 微软超融合私有云测试29-SCDPM2016部署之创建保护组备份(备份虚拟机)

    在上一篇文章中,我们已经配置好了备份目标介质,并推送了客户端代理,接下来我们配置虚拟机备份来演示如何通过SCDPM进行备份

    SuperDream
  • 速读原著-TCP/IP(安全性考虑)

    很明显,截获网络中传输的数据流使我们可以看到很多不应该看到的东西。例如,T e l n e t和F T P用户输入的口令在网络中传输的内容和用户输入的一样(与口...

    cwl_java
  • 金融数据挖掘之朴素贝叶斯

    你和我之前的人生, 就像是来自同一个分布族的共轭曲线, 即使有各自的参数空间, 也注定要相识相念。 你和我之后的人生, 是我们相扶相持下不离不弃的最大似然, 用...

    数说君
  • 100行代码爬取全国所有必胜客餐厅信息

    当我刚接触 Python 时,我已经被 Python 深深所吸引。Python 吸引我的地方不仅仅能用其编写网络爬虫,而且能用于数据分析。我能将大量的数据中以图...

    猴哥yuri
  • pandas 处理大数据——如何节省超90%内存

    使用 pandas 处理小数据集不会遇到性能问题,但是当处理大数据集时(GB级)会遇到性能问题,甚至会因为内存不足而无法处理。

    bugsuse
  • 资源 | 如何开启深度学习之旅?这三大类125篇论文为你导航(附资源下载)

    选自Github 作者:songrotek 机器之心编译 参与:晏奇、黄小天 如果你现在还是个深度学习的新手,那么你问的第一个问题可能是「我应该从哪篇文章开始...

    机器之心

扫码关注云+社区

领取腾讯云代金券